除了在rcS中编写了启动所需的必须功能命令后,我们还可以添加自己的定制功能。方法如下:
首先,在/usr/bin下,编写各个定制功能的脚本。注意修改权限
chmod a+x myscript
在脚本里把需要执行的命令步骤写好。
(chmod的各种权限组合:
chmod [u|g|o|a] [+|-] [r|w|x] myscript
)
在rcS中,运行各个脚本。
我们知道,
在SHELL中运行命令时,SHELL是被占用的,会等待子进程的返回,SHELL才能再次进入WAITFORCMD状态。
但是如果我们的运行脚本里面是一个循环,这就麻烦了,SHELL将卡死在这里,一直等待子进程返回。
解决办法就是,把子SHELL进程变成后台进程。
运用的SHELL操作符是"&"。
SHELL中,如果申明了子进程是后台进程,那么SHELL创建并启动了子进程后,不会阻塞等待子进程的返回,而是非阻塞,立即回到SHELL中,继续执行下一条命令,如果没有下一条命令了,就进入WAITFORCMD状态。
例如:
我们新建了一个OLED闪烁的脚本go_oled。
i=1
while [ i ]
do
cat /root/logo1.bin > /dev/zed_oled
sleep 2s
cat /root/logo2.bin > /dev/zed_oled
sleep 2s
cat /root/logo3.bin > /dev/zed_oled
sleep 2s
done
这是一个不会退出的循环体。
我们在rcS中加上:
echo “starting oled …”
go_oled &
保存退出。
重启后,可以发现OLED循环播放了。