Linux下rcS文件中sleep用法,对busybox工具rcS脚本中exec执行﹑&后台执行和nohup执行的理解...

因为/etc/init.d/rcS脚本在/etc/inittab中以最高优先级第一个被init程序解析并使用daemon方式启动,

::sysinit:/etc/init.d/rcS

所以这样rcS脚本就作为一个独立的程序存在于进程空间了,

比如我们希望在rcS脚本中执行一个独立的程序,那么我们应该使用直接执行命令方法,而不是使用exec,

因为exec调用内核将直接置换用户空间rcS程序为exec执行的程序,所以这样exec语句之后的rcS剩余的所有程序都将因为

用户空间程序rcS被置换而永远消失,也不是使用&后台处理方式,[luther.gliethttp]

因为&表示到后台执行这组命令,没有以daemon方式运行,但是很可能后台那组命令还没有执行完的时候,

rcS脚本就已经退出了,所以这样以rcS程序为parent的所有&后台运行的程序都将被强制退出,[luther.gliethttp]

所以正确的做法是直接执行需要的程序,比如直接输入/sbin/telnetd,

当然如果在rcS脚本中启动没有返回的程序,那么可以加入nohup,将该程序以daemon方式脱离与rcS的关系,这样即便rcS脚本

程序执行完毕退出了,nohup的程序也将继续运行下去,希望这段理解对后来接触busybox的人有启发[luther.gliethttp]

下面是2个例子,应用在我的运信2.6.30.4内核的ep9312开发板上:[luther.gliethttp]

nohup /bin/sh -c "/sbin/udhcpc >/dev/null 2>&1" >/dev/null 2>&1 &

nohup /bin/sh -c "sleep 4 ;/bin/mount -o nolock -t nfs 192.168.1.101:/vobs/nfs /nfs" >/dev/null 2>&1 &

阅读(6985) | 评论(0) | 转发(0) |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值