起動時に起動し、クラッシュした場合は再起動する自動起動スクリプトを作成しようとしています。起動時にスクリプトを追加するだけで実行できます
/etc/rc.local
ファイル、しかし私の問題は自動再起動です。実際のスクリプトを開始する前に$$変数を外部テキストファイルにエクスポートし、これを別のスクリプトで使用して、そのpidがまだ実行されているかどうかを確認することを考えました。私の質問は、特定のPIDがまだ実行されているかどうかを確認する方法と、これを行うためのより信頼できる方法があるかどうかです。
このような方法でスクリプトが実行する必要があるのは、systemd
サービスです。
例は次のとおりです。
[Unit]
Description=My Script
[Service]
Type=forking
ExecStart=/path/to/script
Restart=on-failure
[Install]
WantedBy=multi-user.target
これは、いくつかの方法で実行できます。
スクリプトを別の場所に配置し、systemd
サービスファイルからアクセスします。
コードを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