Как запускать работу crontab каждую неделю в воскресенье


263

Я пытаюсь понять, как запускать crontab каждую неделю в воскресенье. Я думаю, что следующее должно работать, но я не уверен, правильно ли я понимаю. Правильно ли следующее?

5 8 * * 6

7
Вопрос о «воскресенье», но принятый ответ о «суббота». ¿?
Инигомедина

11
Используйте https://crontab.guru/ site для создания любого выражения cron.
НБР

Ответы:


481

Вот объяснение формата crontab.

# 1. Entry: Minute when the process will be started [0-60]
# 2. Entry: Hour when the process will be started [0-23]
# 3. Entry: Day of the month when the process will be started [1-28/29/30/31]
# 4. Entry: Month of the year when the process will be started [1-12]
# 5. Entry: Weekday when the process will be started [0-6] [0 is Sunday]
#
# all x min = */x

Таким образом, в соответствии с этим вы будете 5 8 * * 0работать 8:05 каждое воскресенье.


148
Чтобы быть более читабельным, вы можете использовать один из них в sun, mon, tue, wed, thu, fri, or satтечение дня. Это также избавляет вас от необходимости выбирать между использованием 0или 7в воскресенье.
грипп

193

Для выполнения cron в воскресенье вы можете использовать любой из этих:

5 8 * * 0
5 8 * * 7
5 8 * * Sun

Где 5 8обозначает время дня, когда это произойдет: 8:05.

В общем, если вы хотите выполнить что-то в воскресенье, просто убедитесь, что 5-й столбец содержит либо из 0, 7либо Sun. У вас было 6, так что это было в субботу.

Формат для cronjobs:

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

Вы всегда можете использовать crontab.guru как редактор для проверки своих выражений cron.


14
Просто чтобы помочь другим избежать глупой ошибки, которую я только что сделал, и убедитесь, что вы установили для минуты что-то отличное от *, или она будет выполняться каждую минуту этого часа!
user2924019

40

Ниже приведен формат файла crontab.

{минута} {час} {день месяца} {месяц} {день недели} {пользователь} {путь к сценарию оболочки}

Таким образом, каждое воскресенье следует запускать в полночь (обычно воскресенье равно 0, в некоторых редких случаях - 7):

0 0 * * 0 root /path_to_command

1
Голосование за упоминание о том, как указать команду для запуска каждый раз. (Однако пользовательский столбец должен быть пропущен при редактировании с помощью команды "crontab".)
Йоахим Вагнер

1
Воскресенье в полночь это 0 час понедельник, то есть 0 0 * * 1.
Фред Лони

5

При указании значений cron вам нужно убедиться, что ваши значения попадают в диапазоны. Например, некоторые cron используют диапазон 0-7 для дня недели, где 0 и 7 представляют воскресенье. Мы не делаем (проверьте ниже).

Seconds: 0-59
Minutes: 0-59
Hours: 0-23
Day of Month: 1-31
Months: 0-11
Day of Week: 0-6

ссылка: https://github.com/ncb000gt/node-cron


3
"мы" ... кто? какая программа и версия?
Массимо

Его непосредственно по ссылке: D
Mendon Ашвини

2

Выражение задания Cron понятным человеку способом Crontab Builder


1
Имхо, это не ответ, так как здесь ничего не добавлено, и при этом он никоим образом не отвечает на вопрос.
Панкадж

2

Я думаю, что вы хотели бы этот интерактивный веб-сайт, который часто помогает мне создавать сложные директивы Crontab: https://crontab.guru/


0

10 * * * Солнце

Position 1 for minutes, allowed values are 1-60
position 2 for hours, allowed values are 1-24
position 3 for day of month ,allowed values are 1-31
position 4 for month ,allowed values are 1-12 
position 5 for day of week ,allowed values are 1-7 or and the day starts at Monday. 

2
Поздравляем с первым ответом на StackOverflow! Обязательно ознакомьтесь с Руководством по ответам . Например, ответ обычно должен содержать некоторую новую информацию, которая отсутствует в существующих ответах.
doz10us

7
это будет работать 24 раза в воскресенье, 10 минут после часа каждый час.
Йенс Тиммерман


0
* * * * 0 

you can use above cron job to run on every week on sunday, but in addition on what time you want to run this job for that you can follow below concept :

* * * * *  Command_to_execute
- � � � -
| | | | |
| | | | +�� Day of week (0�6) (Sunday=0) or Sun, Mon, Tue,...
| | | +���- Month (1�12) or Jan, Feb,...
| | +����-� Day of month (1�31)
| +������� Hour (0�23)
+��������- Minute (0�59)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.