web-dev-qa-db-ja.com

Crontabで3日ごとに1回スクリプトを実行する

3日ごとに1回実行する必要のあるPerlスクリプトがいくつかあります。以下は、入力した構文です。お知らせください。これは正しいですか、それとも間違っていますか。

30 19    * * */3   root   /var/scripts/svn_backup.pl
5
Caterpillar

それは間違っています。最後の列は曜日です。おそらく移動したいです*/3を3番目の列(日)に:

*     *     *     *     *      command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)
10
quanta

*/3は指定が間違っている列にあります

30 19 */3 * * root /var/scripts/svn_backup.pl 

*/3構文は、1,4,7 ... 25,28,31と同じです。一部の月は31日に実行されることに注意してくださいst そして翌月は1日に実行されますst 間隔の指定は折り返されないため、常にシーケンスの先頭から始まります。この場合、スクリプトは必要な間隔なしで実行されます。

3日ごとに何かを実行する必要がある場合は、スクリプトを毎日実行し、3日が経過したかどうかを判断して、必要に応じて終了/続行する必要があります。

Perlでは、次のようなことができます

if ( int (time/86400)%3 != 0)  {exit 0};

uNIX Epochに基づいて3日ごとにスクリプトを実行します。

13
user9517