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

Ubuntu cron работает каждый рабочий день

На 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