У меня есть несколько сценариев 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)