1. ホーム
  2. linux

[解決済み] cronジョブはまだ実行されていない場合のみ実行されます。

2022-04-24 01:38:22

質問

私が作成したデーモンのウォッチドッグのようなものとして、cronジョブをセットアップしようとしています。デーモンがエラーになり、失敗した場合、私はcronジョブが定期的にそれを再起動することを望みます...。これがどの程度可能なのか分かりませんが、いくつかのcronチュートリアルを読みましたが、私が探していることを行うものは見つかりませんでした...

私のデーモンはシェルスクリプトから開始されるので、私は本当に、そのジョブの前の実行がまだ実行されていない場合にのみ、cronジョブを実行する方法を探しているのです。

こんな投稿がありました ロックファイルを使用して私がやろうとしていることの解決策を提供してくれましたが、より良い方法があるかどうかはわかりません。

解決方法は?

私が書いたプリントスプーラープログラムのためにやっているのですが、単なるシェルスクリプトです。

#!/bin/sh
if ps -ef | grep -v grep | grep doctype.php ; then
        exit 0
else
        /home/user/bin/doctype.php >> /home/user/bin/spooler.log &
        #mailing program
        /home/user/bin/simplemail.php "Print spooler was not running...  Restarted." 
        exit 0
fi

2分おきに実行され、かなり効果的です。 何らかの理由でプロセスが実行されていない場合は、特別な情報をメールで送信するようにしています。