私は現在Linuxを学んでいて、cronとcrontabを使ってスケジュールされたタスクを練習していますが、スケジュールされたタスクが実行される回数を制限できるかどうかを知りたいです。マニュアルページでは、ジョブが定期的に実行されるようにスケジュールする方法がわかりましたが、特定の実行回数またはジョブの実行を停止する必要がある日付を提供する方法が見つかりませんでした。これは可能ですか?
答え1
例: 「2019 年 2 月 4 日月曜日 08:30:00 UTC」(Unix タイムスタンプ 1549269000) まで毎時間実行されるジョブは次のとおりです。
@hourly [ "$( date +\%s )" -lt 1549269000 ] && /path/to/my-script.sh
この仕事はまだ技術的に走るしかし、実行されませんスクリプト与えられたタイムスタンプの後。
同様に、1時間に5回だけ実行されるタスクは次のとおりです。
@hourly ( f="$HOME/job.count";c=0;[ -f "$f" ] && read c <"$f"; echo "$(( c + 1 ))" >"$f"; [ "$c" -lt 5 ] ) && /path/to/my-script.sh
上記の作業は、美化後に次のようになります。
(
f="$HOME/job.count"
c=0
[ -f "$f" ] && read c <"$f"
echo "$(( c + 1 ))" >"$f"
[ "$c" -lt 5 ]
) && /path/to/my-script.sh
これはステータスファイルを使用して、ジョブが実行された$HOME/job.state
回数を保存します。ファイルが存在する場合は、そのファイルの数字をから読み、c
直ちに同じファイルに書き戻して増やします。数値が5未満の場合はスクリプトを実行します。
今回もこの作品は走る状態ファイルの内容にかかわらず毎時、しかしスクリプト状態ファイルの値が 5 より小さい場合にのみ実行されます。