powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Хитрое расписание в crontab
12 сообщений из 12, страница 1 из 1
Хитрое расписание в crontab
    #39000468
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно по крону запускать задание с понедельника по пятницу (условно - рабочие дни недели), но исключить первое и пятнадцатое числа. Предвкушая возможные вопросы про 1 и 15, сразу отвечу: 1 и 15 работает другое аналогичное задание с другими параметрами запуска.

Всё было бы просто, если бы не маленькая досадная особенность объединения:мануал Замечание: день выполнения команды может быть задан в двух полях --- число и день_недели Если оба поля определены (т.е не равны *), то команда будет запущена, когда любое поле совпадёт с текущим временем.Таким образом, расписание
Код: sql
1.
15 20 2-14,16-31 * 1-5

не работает корректно.

Вопрос: возможно ли каким-то хитрым способом желаемое расписание реализовать в стандартном кронтабе, или придётся писать свой враппер.
ОСь FreeBSD 10

Заранее благодарю.
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000485
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх, вопросительный знак в конце предложения потерял...
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000492
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у тебя есть два варианта.

1
Код: sql
1.
2.
15 20 2-14 * 1-5
15 20 16-31 * 1-5



2
Код: sql
1.
15 20 2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 * 1-5
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000521
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YesSql, неа, нет таких вариантов.

Вот пример.
Пятое июля, воскресенье (минувшие выходные). Задание выполняться НЕ должно.
Однако, в соответствии с приведённым в первом посте замечанием из перевода мануала, задание будет выполнено, так как пятое число попадает в диапазон или в перечисление дней месяца (третье поле).
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000551
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleпридётся писать свой врапперПохоже, что так.
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000560
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleYesSql, неа, нет таких вариантов.

Вот пример.
Пятое июля, воскресенье (минувшие выходные). Задание выполняться НЕ должно.
Однако, в соответствии с приведённым в первом посте замечанием из перевода мануала, задание будет выполнено, так как пятое число попадает в диапазон или в перечисление дней месяца (третье поле).
И какому же из двух приведенных мной вариантов соответствует то что в твоем первом посте?
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000562
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YesSqlvkleYesSql, неа, нет таких вариантов.

Вот пример.
Пятое июля, воскресенье (минувшие выходные). Задание выполняться НЕ должно.
Однако, в соответствии с приведённым в первом посте замечанием из перевода мануала, задание будет выполнено, так как пятое число попадает в диапазон или в перечисление дней месяца (третье поле).
И какому же из двух приведенных мной вариантов соответствует то что в твоем первом посте?
Ааа.. замечание не прочитал. Возможно. Не сталкивался.
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000586
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YesSqlYesSqlпропущено...

И какому же из двух приведенных мной вариантов соответствует то что в твоем первом посте?
Ааа.. замечание не прочитал. Возможно. Не сталкивался.
Я бы попробовал что то такое
Код: sql
1.
15 20 2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 * * test %(date +%u) -ge 1 && test $(date +%u) -le 5 && echo hello world
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000629
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если время старта не сильно критично и задание достаточно долго выполняется , то для 1 и 15

14 20 ..... flock -w 10 <задание для 1 и 15>
15 20 .... flock -w 10 <задание для остальных дней>

1 и 15 запустится задание, через минуту попытается запуститься второе задание, но через 10 сек после
попытки запуститься - отвалится, и не будет выполнено
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000636
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл указать файл блокировки - д б один и тот же

14 20 ..... flock -w 10 /tmp/file.lck <задание для 1 и 15>
15 20 .... flock -w 10 /tmp/file.lck <задание для остальных дней>
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000895
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landyЕсли время старта не сильно критично и задание достаточно долго выполняетсяТак и есть. Благодарю, интересная идея с блокировкой. Попробую реализовать.
...
Рейтинг: 0 / 0
Хитрое расписание в crontab
    #39000929
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleНужно по крону запускать задание с понедельника по пятницу (условно - рабочие дни недели), но исключить первое и пятнадцатое числа. Предвкушая возможные вопросы про 1 и 15, сразу отвечу: 1 и 15 работает другое аналогичное задание с другими параметрами запуска.Я в таких случаях просто пишу .sh в котором через date определяю что и как надо запускать.
Что-то в духе:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
if [ `date +%u` -le 5 ] ; then 
    if [ `date +%d` -eq 1 -o  `date +%d` -eq 15 ] ; then
         start_special_process
    else
         start_normal
   fi
fi


А этот скрипт уже запускаю из крона каждый день.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Хитрое расписание в crontab
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]