web-dev-qa-db-ja.com

ブートで開始し、失敗時に自動再起動するスクリプト

起動時に起動し、クラッシュした場合は再起動する自動起動スクリプトを作成しようとしています。起動時にスクリプトを追加するだけで実行できます

/etc/rc.local

ファイル、しかし私の問題は自動再起動です。実際のスクリプトを開始する前に$$変数を外部テキストファイルにエクスポートし、これを別のスクリプトで使用して、そのpidがまだ実行されているかどうかを確認することを考えました。私の質問は、特定のPIDがまだ実行されているかどうかを確認する方法と、これを行うためのより信頼できる方法があるかどうかです。

2
ADDB

このような方法でスクリプトが実行する必要があるのは、systemdサービスです。

例は次のとおりです。

[Unit]
Description=My Script


[Service]
Type=forking    
ExecStart=/path/to/script
Restart=on-failure

[Install]
WantedBy=multi-user.target

これは、いくつかの方法で実行できます。

  1. スクリプトを別の場所に配置し、systemdサービスファイルからアクセスします。

  2. コードをsystemdサービスファイルに直接配置します。

最初の選択肢はあなたの状況に理想的だと思います。これで、次のような通常のsystemctlコマンドで起動時に有効になります。

Sudo systemctl enable myscript.service
Sudo systemctl status myscript.service
Sudo systemctl stop myscript.service
Sudo systemctl start myscript.service

ソース:

https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

https://www.freedesktop.org/software/systemd/man/systemd.unit.html

1
George Udosen