2016-12-29 11 views
0

5日ごとに実行されるcronジョブを設定する必要がありますが、特定の日付に開始する必要があります。特定の日付を開始日としてN日ごとに実行するクローンを設定する

たとえば、5日ごとにカールを実行しますが、最初の実行は来週になります。

これは可能なのですか、その日が来るのを待つ必要がありますか?

+0

時間はおそらくhttp://stackoverflow.com/questionsの重複を –

+0

を来るとき、私はcronのを追加したいです/ 704927/un-linux-allow-specify-exact-start-and-end-dates – Sharad

答えて

0

一部のcron実装では、その日の*/5の構文を提供する場合があります。 16-31/5という構文は、「16日から5日ごとに」という意味です。

最初の問題は、次の月間に2番目の*/5エントリが必要になることです。このような構文の2番目の問題は、スクリプトが毎月1日、6日、11日、16日、21日、26日および31日にトリガーされることです。これらの固定日は、一般的に「5日に1回」という意味ではありません。

あなたの解決策は、毎日cron(あなたの選択した最初の日から始まる)であなたの仕事を誘発し、あなたの5日間の最初の日であるかどうかを確認するためにスクリプトで予備計算を行います。そうでない場合は、すぐにexit 0でスクリプトを終了します。

この試験は、(bashで)のように単純であってもよい。その年の日が*/5については5の倍数である場合、そのような線と、スクリプトが実行される、こと

(($(date +"%j") % 5 == 0)) || exit 0 

crontabでは、年が変わると5日に1回ではないかもしれませんが、それはかなり良い近似です。あなたはアイデアを持っている、あなたはより良いことがあります。

もちろんの[更新]これはクーロンで実行されるコマンドに追加することができます。

SHELL=/bin/bash 
mn h * * * (($(date +"%j") % 5 == 0)) && my_command 
+0

私はそのようなことをやろうとしていましたが、毎日実行するcronを避けたいと思っていましたスクリプト内のコードロジック。 – Frozkata

+0

@Frozkataこのロジックは、cronコマンドに移動できます。特定の解決策を避けたいのであれば、それをあなたの質問に明確に述べるべきです。私たちは読者を気にしません。 – xhienne

+0

@Frozkata私はそれに応じて私の答えを更新しました – xhienne

関連する問題