LINUX.ORG.RU

Не работают дни недели в cron на Centos 7

 ,


0

1

Здравствуйте, не в первый раз создаю задачи в cron, всегда все выполнялось, а тут никак не могу разобраться. ОС CentOS 7, в папке /etc/cron.d/ создаю файл BackUp_MailReport с записью:

# Run services of job the DeleteBackUp
0 20 * * * root /bin/DeleteBackUp.sh
# Run services of job the MailReport_DiffChet.sh
0 8 1-24 2,4,6,8,10,12 1 root /bin/backup_MailReport_DiffChet.sh
# Run services of job the MailReport_DiffNeChet
0 8 1-24 1,3,5,7,9,11 1 root /bin/backup_MailReport_DiffNeChet.sh
# Run services of job the MailReport_FullChet
0 8 25-31 2,4,6,8,10,12 1 root /bin/backup_MailReport_FullChet.sh
# Run services of job the MailReport_FullNeChet
0 8 25-31 1,3,5,7,9,11 1 root /bin/backup_MailReport_FullNeChet.sh

И задания выполняются каждый день, без учета дня недели, как будто там стоит звездочка. Подскажите пожалуйста, может кто сталкивался с этой проблемой. Спасибо.

man 5 crontab

Commands are executed by cron(8) when the minute, hour, and month of year fields match the current time, and at least one of the two day fields (day of month, or day of week) match the current time (see «Note» below).

Note: The day of a command’s execution can be specified by two fields — day of month, and day of week. If both fields are restricted (ie, aren’t *), the command will be run when either field matches the cur rent time.

По вашему конфигу задания должны выполняться по указанным дням месяца и по понедельникам.

mky ★★★★★ ()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от mky

Здравствуйте, да Вы правы - по понедельникам и дням недели, а вместо этого выполняется каждый день, почему то. Что бы не стояло вместо единицы, все равно выполняет каждый день, никак не могу понять почему так.

kudrik_tt ()
Ответ на: комментарий от kudrik_tt

Что бы не стояло вместо единицы, все равно выполняет каждый день, никак не могу понять почему так.

Выше же указали

Note: The day of a command’s execution can be specified by two fields — day of month, and day of week. If both fields are restricted (ie, aren’t *), the command will be run when either field matches the current time

То есть, если указаны дни месяца и дни недели, то команда будет выполняться при любом соответствии этих условий.

0 8 1-24 2,4,6,8,10,12 1 root /bin/backup_MailReport_DiffChet.sh]

8:00 c 1 по 24 число 2,4,6,8,10,12 месяца и в понедельник

Samsky ()
Ответ на: комментарий от mky
0 8 1-24 2,4,6,8,10,12 1 root /bin/backup_MailReport_DiffChet.sh

Все понял, то есть либо задание выполняется c 1 по 24 числа месяца либо в понедельник. А есть какой либо способ это обойти? чтобы выполнялось в совокупности условий с 1-24 и этот день является понедельником, вместо ИЛИ логику И?

kudrik_tt ()
Ответ на: комментарий от Samsky

Да спасибо, разобрался, только у Вас неточность

8:00 c 1 по 24 число 2,4,6,8,10,12 месяца ИЛИ в понедельник
Решил долго не ковыряться, просто обернул исполняемый скрипт в проверку условия что сегодня понедельник. Спасибо большое за ответы!

kudrik_tt ()
Ответ на: комментарий от kudrik_tt

Имхо, проверку можно в крон завернуть. Примерно так.

 
0 8 1-24 2,4,6,8,10,12 [ "$(date '+\%a')" = "Mon" ] && /bin/backup_MailReport_DiffChet.sh

Samsky ()
Ответ на: комментарий от Samsky

Спасибо, не знал что в cron можно команды прописывать, я так и сделал, но в самом скрипте, хотя Ваше решение более красивое, универсальное.

kudrik_tt ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.