web-dev-qa-db-ja.com

失敗した場合にAmazon Linuxサービスを自動再起動するように構成するにはどうすればよいですか?

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のどこにありますか?

1
Dave

Amazon Linux 2

Amazon Linuxのバージョンが2.0以上の場合、デフォルトでシステム化されています。この場合、CentOSで使用していたのと同じユニットファイルを、restartディレクティブを使用するだけで使用できるはずです。

Amazon Linux AMI

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でプロセスを開始し、終了時に再起動するように指示します。

また、起動時に実行する実行可能ファイルの周りにいくつかのコマンドを追加したい場合、実行可能パスは代わりに、フォアグラウンドでプログラムを実行するスクリプトを参照できます。

3
novice

Amazon Linuxを使用しています。

はい、man init

新鮮な場合は、実際にはsystemdであることがわかります。したがって、q-nは すでに回答済み に変換されます。

systemd過剰設計(実際には私たちの多くがそうしているように)を検討する場合は、由緒あるデーモンツールやsmth(runit、supervisord)を試すことができます。ただし、Amazon Linuxに付属している標準のリポジトリには含まれていない可能性があります。

0
poige