Ubuntu 14.04を使用してください。いつでも実行する必要があるスクリプトがあります。最も簡単な方法は、crontabを使用して別のスクリプトを実行してscript1が実行されていることを確認し、それ以外の場合は再起動することです。
私はcrontabと可能であればsuコマンドを避けたい(追加設定なしでrootとして実行したい)。また、rootとしてscript1を実行するユーザーに対して1日に1回、すべてのプロセスをクリーンアップ(終了)するスクリプトもあります。クリーンアップ後、そしてscript1が停止した場合は、この間隔中にscript1を再起動したいと思います。
答え1
スクリプトをsystemd
サービスとしてインストールします。 systemd が終了すると自動的に再起動します。
それほど難しくありません。短いsomething.service
ファイル(Restarts=always
どこかにある場所)を作成し、適切なディレクトリに配置/リンクしてから、いくつかのsystemctl
コマンドを実行します。バラよりここチュートリアルを入手してください。
PS:systemdは14.04で利用できますが、システム自体はあまり使われていません。以降のバージョンではさらに一般化されています。
答え2
通常、プロセスは実行中のプロセスによってのみ開始できます。ソリューションは、スクリプトアカウントのすべてのプロセスが終了した場合にのみ、そのユーザーの範囲外になることがあります。ただし、2つの状況(ルートによって終了した場合と競合/終了によって終了した場合)は異なる方法で処理される可能性があります。
終了後に再起動
これはとても簡単です。
#! /bin/bash
while true; do /path/to/script.sh; done
毎日のキル後に再起動
- Killスクリプトは上記のラッパースクリプトを再起動します。
- 他のユーザーとして実行されるスクリプトは、スクリプトがまだ実行されているか定期的にチェックし、必要に応じて再起動します。ただし、rootで実行されていない場合は、
sudo
SUIDバイナリが必要です。su