25分ごとにタスクを実行するより簡単な方法があるかどうか疑問に思います。 cronjobで分パラメータを* / 25に指定すると、毎時間25分と50分でのみ実行されます。
答え1
crontabのコマンドはcrontabで実行されるため、/bin/sh
算術拡張を使用して現在の分モジュールで25が0に等しいかどうかを計算できます。
*/5 * * * * [ $(( $(date +\%s) / 60 \% 25 )) -eq 0 ] && your_command
cron
エントリ全体は5分ごとに実行されますが、現在の分(エポック以降の分数)モジュールで25が0に等しい場合にのみ実行されますyour_command
。
他の人が指摘したように、1日は25分に分かれていないので、your_command
毎日同じ時間に実行されるわけではありませんが、〜する25分ごとに実行されます。
答え2
最良の方法は20〜30分間走ることです。
次善策は、おそらく5分ごとにトリガーしてから内部カウントまたはタイムスタンプを維持し、5回のトリガーごとに実行するか、最後の実行後25分が経過した場合に実行することです。
さらに複雑なのは、真夜中から始まり、一日の正確な時間を把握し、一日の終わりにエラーを受け入れることです。これには、crontabエントリを別の時間にコピーすることが含まれます。
これより複雑なのは、1ヶ月全体の時間を計算することです。
最後に、独自のAlways-Onデーモンを実装し、スケジューリングを実行することができます。
答え3
答え4
ファイルが最後に変更された時間で再生できます。
/usr/local/bin/age
ファイルの寿命を出力する小さなスクリプト(たとえば)を作成します。#bin/sh echo $(( $( date +%s ) - $( stat -c %Z $1 ) ))
あなたのcrontabは次のとおりです(私が正しい場合、25分が1500秒であると仮定)
* * * * * [ $(/usr/local/bin/fileage /var/tmp/your_command.offset) -gt 1500 ] && touch /var/tmp/your_command.offset && your_command
私が/var/tmp
代わり/tmp
に使用していることに注意してください。FHSシステムのシャットダウン/起動時に削除しないでください。