Назад | Перейти на главную страницу

Запуск скрипта в Crontab каждые 3 дня один раз

У меня есть несколько сценариев Perl, которые нужно запускать один раз каждые 3 дня. Ниже приводится синтаксис, который я ввел. Не могли бы вы сообщить мне, правильно это или нет.

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

* / 3 находится в неправильном столбце, ваша спецификация должна быть

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

Синтаксис * / 3 такой же, как 1,4,7 ... 25,28,31. Обратите внимание, что в некоторые месяцы он будет работать на 31ул и в следующем месяце он будет работать на 1ул поскольку спецификации интервалов не переносятся, они всегда начинаются с начала последовательности. В этом случае ваш скрипт запускается без заданного интервала.

Если вам нужно что-то запускать каждые 3 дня, вам придется запускать свой скрипт каждый день, чтобы он определял, прошли ли 3 дня, и выходил / продолжал при необходимости.

В perl вы можете сделать что-то вроде

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

который будет запускать сценарий каждые 3 дня в зависимости от эпохи UNIX.

Это не правильно. Последний столбец - день недели. Вы, наверное, хотите переехать */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)