Здравствуйте.
Пытаюсь сделать задачу по крону - выполнять скрипт один раз в месяц в определенное число и время, обязательно если это РАБОЧИЙ ДЕНЬ.
Собственно, на мой взгляд, должно выглядеть так:
0 21 7 * 1-5 /foo/bar
Т.е., в 21:00 7го числа каждого месяца, если это будни.
Однако, при такой постановке он выполняется каждый будний день, не смотря что сегодня явно не 7 число.
Если сделать
0 21 7 * * /foo/bar
То все ОК, но проблема в том, что если выпадет на СБ-ВС, то пользовательская машина может быть выключена.
Cron только по будням
Модератор: SLEDopit
Re: Cron только по будням
Такая уж у crontab логика: в указанные дни недели, а также в указанные числа. Это и в документации отмечено.
В конце концов если машина выключена, то задание пропадёт без каких-либо ошибок, отложено не будет. Вы этого хотели? Если нет - используйте anacron.
В конце концов если машина выключена, то задание пропадёт без каких-либо ошибок, отложено не будет. Вы этого хотели? Если нет - используйте anacron.
Re: Cron только по будням
Задание - бэкап данных.
Так как объемы большие, чтоб не мешать юзерам - запланировано во внерабочее время.
Т.е., если задание пропадет - месячный бэкап будет пропущен) Это довольно критично.
Я, честно говоря, думал, такие задания довольно востребованы в кроне.
Гугл правда ничего не дал.
Так как объемы большие, чтоб не мешать юзерам - запланировано во внерабочее время.
Т.е., если задание пропадет - месячный бэкап будет пропущен) Это довольно критично.
Я, честно говоря, думал, такие задания довольно востребованы в кроне.
Гугл правда ничего не дал.
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Cron только по будням
man anacrontab
А вообще неплохо бы уточнить дистрибутив и версию cron. В Debian, например, при установленном anacron достаточно положить скрипт бекапа в /etc/cron.monthly.
А вообще неплохо бы уточнить дистрибутив и версию cron. В Debian, например, при установленном anacron достаточно положить скрипт бекапа в /etc/cron.monthly.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Cron только по будням
В том и проблема, что машина будет выключена.
Задача: раз в месяц определенного числа делать бэкап клиентской машины по крону.
Возможные ошибки: на это число месяца может выпасть выходной день. В выходной день клиентская машина будет выключена. Бэкап не сделается. Если клиентская машина рухнет, у нас на руках будет бэкап 1.5-2 месячной давности, а не месячной как планировалось.
###
# cat /etc/redhat-release
CentOS release 6.6 (Final)
# uname -a
Linux server 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
# rpm -qa|grep cron
crontabs-1.10-33.el6.noarch
cronie-1.4.4-12.el6.x86_64
cronie-anacron-1.4.4-12.el6.x86_64
Я смотрел в сторону anacron. Но. В нем не гибко реализовано время, как я понял. Т.е., мне необходимо запускать именно в ночное время. А anacron может запуститься в любое.
Re: Cron только по будням
это понятно, но крон здесь причем?
почему не зупускать крон каждый день, определять текущий день/дату и в зависимости от этого строить логику - то ли запускать бекап, то ли нет, при этом предусмотреть два варианта:
- так нравящаяся вам связка буднего дня и 21 числа - запускать бекап.
- определять, если сегодня пятница, а 21 выпадает на завтра-послезавтра - запускать бекап
Спасибо сказали:
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Cron только по будням
anacron сам по себе не запускается. Он запускается либо при загрузке, либо cron'ом. Скорректировать настройки его запуска не так уж сложно.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Cron только по будням
Вот два последних ответа наставили меня на путь истинный.
Спасибо!
Спасибо!