crontabを使用せずに停止した場合は、スクリプトを再起動してください。

crontabを使用せずに停止した場合は、スクリプトを再起動してください。

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

毎日のキル後に再起動

  1. Killスクリプトは上記のラッパースクリプトを再起動します。
  2. 他のユーザーとして実行されるスクリプトは、スクリプトがまだ実行されているか定期的にチェックし、必要に応じて再起動します。ただし、rootで実行されていない場合は、sudoSUIDバイナリが必要です。su

関連情報