crontab のコマンドは /bin/sh
で実行されます したがって、算術展開を使用して、現在の分のモジュロ 25 がゼロに等しいかどうかを計算できます。
*/5 * * * * [ $(( $(date +\%s) / 60 \% 25 )) -eq 0 ] && your_command
cron
このエントリ全体を 5 分ごとに実行しますが、現在の分 (エポックからの分数) モジュロ 25 がゼロに等しい場合にのみ your_command
を実行します .
他の人が指摘しているように、1 日は 25 分で割り切れないため、your_command
にはなりません。 毎日同じ時間に実行しますが、 25 分ごとに実行されます。
最善の策は、20 分または 30 分で実行することです。
次に最適なのは、5 分ごとにトリガーし、内部カウントまたはタイムスタンプを保持して、5 回ごとにトリガーを実行するか、最後の実行から 25 分経過した場合に実行することです。
より複雑なのは、真夜中から開始して 1 日の正しい時刻を計算し、1 日の終わりにエラーを受け入れることです。これには、crontab エントリを異なる時間に複製することが含まれます。
それよりも複雑なのは、さまざまな組み合わせをカバーするために crontab エントリの多くのコピーを必要とする、1 か月全体の時間を計算することです.
最後に、独自の Always On デーモンを実装して、スケジューリングを行うことができます。
私はそれを直接経験したことはありませんが、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