Автор Тема: cron- не корректное выполнение или моя ошибка?  (Прочитано 3731 раз)

0 Пользователей и 1 Гость просматривают эту тему.

bsm

  • *
  • Сообщений: 2
  • Karma: +0/-0
Здравствуйте.
В cron указал нижеприведенное-

01  8 10,20,31 * mon-fri /root/working/net/Samba/read-write/plany/rc.read-write.sh write
01 23 10,20,31 * mon-fri /root/working/net/Samba/read-write/plany/rc.read-write.sh read

По логам видно, что правила выполняются каждый рабочий день, а не лишь 10, 20 и 31 числа месяца.
Как можно исправить ситуацию и добиться выполнения скрипта в конкретные дни?

Спасибо.

PS. Можно заменить 2-е строки 6-ю строками, но это более громоздко и менее читаемо.

Aleksandr

  • Global Moderator
  • *****
  • Сообщений: 149
  • Karma: +10/-0
Из man crontab:
Цитировать
Для задания полей месяц и день_недели можно использовать имена. Указывайте первые три буквы нужного дня или месяца на английском, регистр букв не имеет значения. Диапазоны или списки имён не разрешены.
Может в этом проблема?
01 8 10,20,31 * 1-5 /root/working/net/Samba/read-write/plany/rc.read-write.sh write
01 23 10,20,31 * 1-5 /root/working/net/Samba/read-write/plany/rc.read-write.sh read

Нет не в этом, читаем дальше:
Цитировать
Замечание: день выполнения команды может быть задан в двух полях --- число и день_недели  Если оба поля определены (т.е не равны *), то команда будет запущена, когда любое поле совпадёт с текущим временем.
т.е. работают по логике "или"
в твоем случае команды будут выполняться в рабочие дни и 10-го, 20-го и 31-го даже если это выходные, а не 10,20 и 31 исключая моменты, если эти числа приходятся на выходные.
Злоупотребим ?

bsm

  • *
  • Сообщений: 2
  • Karma: +0/-0
Пробовал, согл. рекомендации,- желаемое не достигнуто.
Пришлось сделать так-

01  8 10,20,31 aug * /root/working/net/Samba/read-write/plany/rc.read-write.sh write
01 22 10,20,31 aug * /root/working/net/Samba/read-write/plany/rc.read-write.sh read

Думаю сделать скрипт, внутри которого будет проверка на диапазон дат (10,20,последний_день_месяца) и (рабочий_день), скрипт можно будет выполнять из cron-

01  8 * * * /root/working/net/Samba/read-write/plany/rc.read-write.sh write
01 22 * * * /root/working/net/Samba/read-write/plany/rc.read-write.sh read

Тема закрыта.
Спасибо.