25分ごとにCronJob


13

25分ごとにジョブを実行する簡単な方法があるかどうかを知りたいです。cronjobで、分パラメーターを* / 25として指定すると、毎時間の25分と50分にのみ実行されます

回答:


15

crontabのコマンドが実行される/bin/shので、算術展開を使用して、25を法とする現在の分がゼロに等しいかどうかを計算できます。

*/5 * * * * [ $(( $(date +\%s) / 60 \% 25 )) -eq 0 ] && your_command

cronこのエントリ全体を5分ごとに実行しますが、25を法とする現在の分(エポックからの分単位)がゼロに等しい場合のみ実行されますyour_command

他の人が指摘したように、1日は25分で割り切れないため、これはyour_command毎日同じ時間に実行されることはありませんが、25分ごと実行されます。


単に優しい...-
トマス

少なくともISCのcron実装では、これらの%文字をバックスラッシュでエスケープする必要があることに注意してください。
ステファンシャゼル

@StéphaneChazelas、良い点。私の知る限り、cronの実装にはすべてこれが必要なので、パーセント記号の前にバックスラッシュを追加しました。
コードリード

7

あなたの最善の策は、20分または30分で実行することです。

次に最適なのは、5分ごとにトリガーし、内部カウントまたはタイムスタンプを保持して、5回ごとにトリガーを実行するか、最後の実行から25分が経過した場合です。

より複雑なのは、真夜中に開始する1日の正しい時刻を算出し、その日の終わりにエラーを受け入れることです。これには、crontabエントリを異なる時間に複製する必要があります。

それよりも複雑なのは、1か月全体の時間を計算することです。これには、さまざまな組み合わせに対応するためにcrontabエントリのコピーが多数含まれます。

最後に、独自のAlways Onデーモンを実装して、スケジューリングを実行させることができます。


6

私はそれを直接経験していませんが、fcronはあなたが箱から出して欲しいことをするようです。そのドキュメントによると、周波数を指定できます:

# Get our mails every 30 minutes 
@ 30 getmails -all 

# make some security tests every 48 hours of system up time, 
# force a mail to be sent to root even if there is no output 
@mailto(root),forcemail 2d /etc/security/msec/cron-sh/security.sh

ここで25分はどこにありますか?
フィロマス

fcronを使用@ 25 commandして、トリックを行う必要があります。
カレブ

ありがとうカレブ。ドキュメントからまっすぐに持ち上げるのではなく、カスタマイズされた例を作成する必要がありました。
che2cbs

2

ここで何が問題なのか簡単に説明させてください。分フィールドに25を入力cronすると、現在の時間の分が25に等しいとき、つまり1時間に1回実行されます。一致のリストを入力できますが、問題は60(1時間の分)が25で割り切れないため、時間に基づいていくつかのエントリを追加する必要があることです。60と25の最小公倍数は300、つまり5 * 60です。そのため、元のスタートに戻るまで5時間サイクルする必要があります。例えば:

0、25、50
15、40
5、30、55
20、45
10、35
...

しかし、ここでも、24(1日の時間)は5で割り切れません。5と24の最小公倍数は、単純に5 * 24 = 120です。


たぶん、答えは元の質問に対するコメントだったはずです。
フィロマス

1

ファイルの最終変更時間で遊ぶことができます

  • /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

FHSによれば、システムのシャットダウン/起動時に削除されることになっていないため、/var/tmp代わりに使用していることに注意してください。/tmp


-2

私は次のように動作するはずだと思う0 0/25 * * *?


私の知る限り、それは毎分機能します。

それは1時間ごとに1回実行されます... 25時間ですか?...
カレブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.