よくこんな感じで1分おきにジョブを流したい場合があると思う。
* * * * * /path/to/your/cron_job.sh
ところがこのcron_job.shが1分以内に処理が終わらない場合、1分後には同じスクリプトが2重で起動されてしまうので、その防止方法について考える。
こういう場合ジョブの実行開始時にロックファイルを作成して、ロックファイルがあったら後追いのcronでは実行しちゃだめよーという方法がポピュラーらしいが、なんか面倒に感じる。
一番簡単かも?な多重起動防止機構付きのcrontabワンライナー
ということで、簡単な方法を求めていたら、pidofコマンドを使ってジョブの実行状況を確認する方法だとワンライナー的に書けて一番便利そう。これでええやん。
* * * * * /usr/sbin/pidof -x cron_job.sh >/dev/null || /path/to/your/cron_job.sh
上記のワンライナーの細かい説明と、一応実際に動作するか試してみましたので、詳細見たい方はこちらも併せてご覧ください。