На Ubuntu 16 я пытаюсь запустить задание cron в 8:00 по рабочим дням, и вот что я пробовал до сих пор.
0 8 * * 1-5 /path/to/command
и
0 8 * * MON-FRI /path/to/command
Не работает
Эти синтаксисы действительны для всех рабочих дней с 8:00:
0 8 * * 1-5 /path/to/command >/dev/null 2>&1
0 8 * * 1,2,3,4,5 /path/to/command >/dev/null 2>&1
как вы сказали @ aleksandar-pavić Дополнительные объяснения по этим ссылкам:
Использование >/dev/null 2>&1
не является обязательным, цель - перенаправить все выходные данные в / dev / null.
У вас должна быть другая проблема, вы также должны указать пользователя, если используете crontab -e
Вот напоминание о синтаксисе cron
* * * * * *
| | | | | |
| | | | | +-- Year (range: 1900-3000)
| | | | +---- Day of the Week (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 1-12)
| | +-------- Day of the Month (range: 1-31)
| +---------- Hour (range: 0-23)
+------------ Minute (range: 0-59)
Во-первых, похоже, что вы хотите запустить команду на будни, в отличие от рабочие дни.
будний день: любой день недели, кроме воскресенья или, часто, субботы и воскресенья.
рабочий день: день, в который выполняется работа; рабочий день.
Если ты хотел рабочие дни, вам придется планировать сценарий каждый день с cron
, а затем встроить в этот сценарий логику, необходимую для определения того, является ли «сегодня» рабочим днем и команда должна быть выполнена или нет.
Поскольку вопрос помечен ubuntu-16.04
, Я посмотрел на соответствующие страница руководства который гласит:
день недели 0-7 (0 или 7 - солнце, или используйте названия)
Имена также могут использоваться для
month
иday of week
поля. Используйте первые три буквы конкретного дня или месяца (регистр не имеет значения). Диапазоны или списки имен не допускаются..
а затем попробовал этот crontab на сервере Ubuntu 16.04:
* * * * 1-5 date >> /tmp/date.txt
Это дает желаемый результат:
Mon May 1 00:00:25 CEST 2017
Tue May 2 00:00:03 CEST 2017
Wed May 3 00:00:47 CEST 2017
Thu May 4 00:00:01 CEST 2017
Fri May 5 00:00:53 CEST 2017
Fri May 5 00:01:01 CEST 2017
Это достигается путем установки системного времени на 00:00:00 для каждого дня первой недели мая 2017 года. Результаты также показывают, что cron не гарантирует выполнение с интервалом точности менее одной минуты (если интересно, см. вопрос по этой теме).
Просто из любопытства я попробовал следующий crontab:
* * * * MON-FRI date >> /tmp/date.txt
Удивительно, но вопреки тому, что написано в документации, он все еще работает:
Mon May 1 00:00:44 CEST 2017
Tue May 2 00:00:39 CEST 2017
Wed May 3 00:00:47 CEST 2017
Thu May 4 00:00:17 CEST 2017
Fri May 5 00:00:10 CEST 2017
Наконец, протестировал и нашел ответ, поэтому 1-5 или MON-FRI не работают, работает
0 8 * * 1,2,3,4,5 /path/to/command