busybox吧 关注:1,670贴子:2,133
  • 0回复贴,共1

请教一个busybox初始化问题

只看楼主收藏回复

大佬们好,我最近有一个busybox的初始化需求,一直没有想到什么很好的解决方法,请大佬们帮我指点一下。
这个busybox版本有点老,但暂时不方便替换掉,它自带的inittab内容如下:
===========inittab==============
::sysinit:/etc/rc
ttyS0::respawn:/bin/sh
==============================
我们的应用程序,启动后需要接管终端,所以我在rc最后一行加上了我们的start.sh(执行后阻塞)。
现在问题来了。我发现rc被我们start.sh脚本阻塞后,init开始无法释放僵尸子进程。随便启动一个服务,然后kill掉,就变成init下的一个僵尸进程。久而久之,系统资源耗尽重启。
如果我在最后加一行::respawn:/start.sh,那就出现我们的控制台程序跟sh争用终端的情况,两个程序依次取输入字符。
但是,如果我启动脚本中不执行start.sh。等系统完全启动,并进入shell后,手动执行/start.sh,那么一切就都正常了。我们的应用也能接管终端运行,init进程也会回收僵尸。
请问大佬们,我的start.sh脚本,究竟应该放在什么地方执行,才能进入上面这种状态呢?
PS:/etc/init.d/rcS不行,当前busybox版本是1.00,我看到init_main里,除非/etc/inittab文件不存在,它才会执行这个初始化脚本。


IP属地:北京1楼2022-04-27 09:18回复