如何尽早启动和管理busybox inittab和rcS中的进程?

如何尽早启动和管理busybox inittab和rcS中的进程?

我正在开发一个嵌入式 Linux 系统,其中 busybox 被用作 init。
我对运行我的应用程序有两个要求。

  1. 我的申请需要尽早开始;
  2. 它需要由busybox管理(如果退出则重生)。

首先,我在 /etc/inittab 中启动我的应用程序,如下所示,

# now run any rc scripts
::sysinit:/etc/init.d/rcS

# Put a getty on the serial port
#ttyS3::respawn:/sbin/getty -L  ttyS3 57600 vt100 # GENERIC_SERIAL
#no login
::respawn:/usr/bin/myapp
::respawn:-/bin/sh

这样myapp就由busybox管理,当它退出时,busybox会自动启​​动它。

但我发现很多服务/守护进程是在/etc/init.d/rcS启动 myapp 之前启动的。这不符合第一个要求。

我创建了/etc/init.d/S02myapp(由 启动/etc/init.d/rcS)来在其中启动我的应用程序,但它不满足第二个要求(我不知道 busybox 是否可以管理由 启动的应用程序rcS)。

然后我找到了另一种方法来满足这两个要求,如下所示,

  1. 更改/etc/init.d/S02myapp,启动另一个进程myapp.sh作为后台进程。
  2. Create myapp.sh,其中有一个 while 循环,其中 myapp 作为前台进程启动。

有了它, myapp 就会尽早启动(由 启动rcS),如果它退出, while 循环myapp.sh将再次启动它。

我验证了它的工作原理,但我认为这种方式有点难看,因为它显示了ps ax如下内容,

 1539 root      0:00 {myapp.sh} /bin/sh /etc/init.d/myapp.sh
 1544 root      0:00 /sbin/mdev -df
 1545 root      1:21 myapp

我想知道是否有明确的方法来满足我的应用要求?

相关内容