Amazon Linuxを使用しています。次の場所に、bashで記述されたサービスを開始および停止するスクリプトがあります。
/etc/init.d/wildfly
さまざまな実行レベルで、スクリプトを確実に開始および停止するためのシンボリックリンクがあります。
/etc/rc.d/rc3.d/S80wildfly
/etc/rc.d/rc2.d/S80wildfly
しかし、私の質問は、サービスが失敗した場合に自動的に再起動できることを確認するにはどうすればよいですか?私はCentOSを読んで、ディレクティブを使用してファイル(例: "wildfly.service")を作成できます
Restart=always
RestartSec=3
対応するディレクティブはAmazon Linuxのどこにありますか?
Amazon Linuxのバージョンが2.0以上の場合、デフォルトでシステム化されています。この場合、CentOSで使用していたのと同じユニットファイルを、restartディレクティブを使用するだけで使用できるはずです。
Amazon Linux AMIを実行している場合は、別のスーパーバイザーを使用してプロセスを監視するか(前述のように)、/ etc/inittabを使用する必要があります。
たとえば、sysvinitでプロセスを自動的に再起動するには、/ etc/inittabに以下を追加します。
# Start and respawn process
mydaemon:2345:respawn:/path/to/executable argument1 argument2
これは、sysvinitに、ランレベル2、3、4、および5でプロセスを開始し、終了時に再起動するように指示します。
また、起動時に実行する実行可能ファイルの周りにいくつかのコマンドを追加したい場合、実行可能パスは代わりに、フォアグラウンドでプログラムを実行するスクリプトを参照できます。
Amazon Linuxを使用しています。
はい、man init
新鮮な場合は、実際にはsystemd
であることがわかります。したがって、q-nは すでに回答済み に変換されます。
systemd
過剰設計(実際には私たちの多くがそうしているように)を検討する場合は、由緒あるデーモンツールやsmth(runit、supervisord)を試すことができます。ただし、Amazon Linuxに付属している標準のリポジトリには含まれていない可能性があります。