hummingbird
@hummingbird

Как составить расписание CRON по конкретным дням месяца?

Хочу реализовать выполнение команды по конкретным дням месяца. Например - 1, 10, 20 и 30 числа каждого месяца.

Верно ли это?
* * 1,10,20,30 * * /command


И что в примере ниже означают два первых нуля?
0 0 27-31 * *
  • Вопрос задан
  • 8911 просмотров
Решения вопроса 3
Akdmeh
@Akdmeh
PHP, Yii2, Music
Не верно. Это значит, будет исполнятся каждую минуту и час 1, 10, 20, 30 числа.
Нужно указать два ноля, т.е., 0 0 1,10,20,30 * * command
Таким образом исполнение будет происходить в 00:00 нужных чисел.
Существует отличный сервис, в котором расшифровывается значение комманд cron:
crontab.guru/#0_0_1,10,20,30_*_*
Ответ написан
sashkets
@sashkets
Прекратил отвечать после 24.02.2022
0 0 27-31 * *

запуск в 0 часов 0 минут 27-31 числа каждого месяца
да, можно указывать через запятую
Ответ написан
Комментировать
erniesto77
@erniesto77
oop, rb, py, php, js
первый вариант будет правильным, но я бы добавил время выполнения:
0 3 1,10,20,30 * * /command будет выполняться в 3 часа ночи каждые 1,10,20,30 числа месяца

а это на всякий случай:
первое число минута (0-59)
второе число час (0-23)
третье число день месяца (1-31)
четвертое число месяц (1-12)
пятое число день недели (0-6)

В пятом значении (день недели) 0 - это воскресенье
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Первая запись означает "Запускать команду /command каждую минуту каждого часа 1,10,20,30 числа каждого месяца каждого дня недели".
Вторая запись означает "Запускать (неуказанную команду) в 0 минут 0 часов с 27-го по 31 число каждого месяца каждого дня недели"
Поля в кронтабе идут в следующем порядке:
- Минута (0-59, ведущий ноль можно не указывать)
- Час (0-23, про ноль тоже самое)
- Число месяца (1-31)
- Месяц (1-12)
- День недели (0-6, 0 - воскресенье)
Если в поле указана * - это означает "любой". Если в поле указано */(число) - это означает "раз в (число) единиц", например */15 в первом поле - раз в пятнадцать минут.

И обо всем это можно прочитать в man crontab :D
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы