busybox inittabとrcSでできるだけ早くプロセスを起動して管理する方法は?

busybox inittabとrcSでできるだけ早くプロセスを起動して管理する方法は?

私はbusyboxをinitとして使用する組み込みLinuxシステムを開発しています。
アプリケーションを実行するには2つの要件があります。

  1. 私の申請書はできるだけ早く始める必要があります。
  2. ビジーボックス(終了時に再生成)で管理する必要があります。

まず、次のように/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が自動的に起動します。

しかし、myappを起動する前に、多くのサービス/デーモンが起動することがわかりました/etc/init.d/rcS。これは最初の要件を満たしていません。

私のアプリを実行するために作成/etc/init.d/S02myapp(で実行/etc/init.d/rcS)しましたが、2番目の要件を満たしていません(Busyboxが実行しているアプリを管理できるかどうかrcS)。

その後、以下のように両方の要件を満たす他の方法を見つけました。

  1. 変更し、/etc/init.d/S02myapp他のプロセスをmyapp.shバックグラウンドプロセスとして起動します。
  2. Createmyapp.shには、myappがフォアグラウンドプロセスで始まるwhileループがあります。

これにより、myappはできるだけ早く(startupによって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

私のサポート要件を満たすための明確な方法があるかどうか疑問に思います。

ベストアンサー1

おすすめ記事