組み込みシステムでinittabを介してアプリケーションを実行しようとしています。転生の利点を活用するには、init.dスクリプトを使用せずにinittabを介してこれを行うことが望ましいです。このシステムにはsystemdはありません。 inittabには次のものがありますmyapp::respawn:/path/to/my/app
。どんなに努力しても起動できません。すべてこれ私は以下を観察しました(手動で始まります)。
sh -c /path/to/my/app # works
sh -c exec /path/to/my/app # does not work
sh -c 'exec /path/to/my/app' # works
すべてこれ回答次のシェルスクリプトも機能します。
#!/bin/sh
exec /path/to/my/app
現在init.dスクリプトを介してアプリケーションを起動します。su - root -c '/path/to/my/app &'
動作しますが、同じコマンドがinittabでも機能しません。私の代替案は、init.dで別のモニタースクリプトを実行して出力ps
で見つからない場合は、私のアプリケーションを実行して再起動することですが、inittabを介して「自動」再生成機能を持つ方が良いでしょう。
答え1
投稿した直後、過去にinittabタグが特定の長さより小さくなければならないことに気づいたのが、どんどん覚えています(これはビルドルート生成システムです)。実際にinittabエントリを変更するとapp::respawn:/path/to/my/app
機能します!ラベルは4文字以下でなければならないようです。誰かに役立つようにこの質問を残してください。