Cron только по будням

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модератор: SLEDopit

v1k3ng
Сообщения: 98
ОС: centos/ubuntu

Cron только по будням

Сообщение v1k3ng » 20.10.2016 08:13

Здравствуйте.
Пытаюсь сделать задачу по крону - выполнять скрипт один раз в месяц в определенное число и время, обязательно если это РАБОЧИЙ ДЕНЬ.
Собственно, на мой взгляд, должно выглядеть так:
0 21 7 * 1-5 /foo/bar
Т.е., в 21:00 7го числа каждого месяца, если это будни.
Однако, при такой постановке он выполняется каждый будний день, не смотря что сегодня явно не 7 число.
Если сделать
0 21 7 * * /foo/bar
То все ОК, но проблема в том, что если выпадет на СБ-ВС, то пользовательская машина может быть выключена.


Спасибо сказали:

Аватара пользователя
s.xbatob
Сообщения: 467
ОС: RfRemix

Re: Cron только по будням

Сообщение s.xbatob » 20.10.2016 08:24

Такая уж у crontab логика: в указанные дни недели, а также в указанные числа. Это и в документации отмечено.

В конце концов если машина выключена, то задание пропадёт без каких-либо ошибок, отложено не будет. Вы этого хотели? Если нет - используйте anacron.
Спасибо сказали:

v1k3ng
Сообщения: 98
ОС: centos/ubuntu

Re: Cron только по будням

Сообщение v1k3ng » 20.10.2016 08:33

Задание - бэкап данных.
Так как объемы большие, чтоб не мешать юзерам - запланировано во внерабочее время.
Т.е., если задание пропадет - месячный бэкап будет пропущен) Это довольно критично.
Я, честно говоря, думал, такие задания довольно востребованы в кроне.
Гугл правда ничего не дал.
Спасибо сказали:

Аватара пользователя
nerve
Сообщения: 253
ОС: OpenBSD

Re: Cron только по будням

Сообщение nerve » 20.10.2016 10:01

v1k3ng писал(а):
20.10.2016 08:13
То все ОК, но проблема в том, что если выпадет на СБ-ВС, то пользовательская машина может быть выключена.

не понял в чем проблема.
как вы собираетесь обойти тот момент, что машина может быть выключена и при чем здесь крон?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 13460
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Cron только по будням

Сообщение Bizdelnick » 20.10.2016 10:33

man anacrontab
А вообще неплохо бы уточнить дистрибутив и версию cron. В Debian, например, при установленном anacron достаточно положить скрипт бекапа в /etc/cron.monthly.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

v1k3ng
Сообщения: 98
ОС: centos/ubuntu

Re: Cron только по будням

Сообщение v1k3ng » 20.10.2016 10:59

nerve писал(а):
20.10.2016 10:01
не понял в чем проблема.
как вы собираетесь обойти тот момент, что машина может быть выключена и при чем здесь крон?

В том и проблема, что машина будет выключена.
Задача: раз в месяц определенного числа делать бэкап клиентской машины по крону.
Возможные ошибки: на это число месяца может выпасть выходной день. В выходной день клиентская машина будет выключена. Бэкап не сделается. Если клиентская машина рухнет, у нас на руках будет бэкап 1.5-2 месячной давности, а не месячной как планировалось.

Bizdelnick писал(а):
20.10.2016 10:33
А вообще неплохо бы уточнить дистрибутив и версию cron.

###

# 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 может запуститься в любое.
Спасибо сказали:

Аватара пользователя
nerve
Сообщения: 253
ОС: OpenBSD

Re: Cron только по будням

Сообщение nerve » 20.10.2016 17:27

v1k3ng писал(а):
20.10.2016 10:59
nerve писал(а):
20.10.2016 10:01
не понял в чем проблема.
как вы собираетесь обойти тот момент, что машина может быть выключена и при чем здесь крон?

В том и проблема, что машина будет выключена.

это понятно, но крон здесь причем?
почему не зупускать крон каждый день, определять текущий день/дату и в зависимости от этого строить логику - то ли запускать бекап, то ли нет, при этом предусмотреть два варианта:
- так нравящаяся вам связка буднего дня и 21 числа - запускать бекап.
- определять, если сегодня пятница, а 21 выпадает на завтра-послезавтра - запускать бекап
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 13460
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Cron только по будням

Сообщение Bizdelnick » 20.10.2016 17:43

v1k3ng писал(а):
20.10.2016 10:59
мне необходимо запускать именно в ночное время. А anacron может запуститься в любое.

anacron сам по себе не запускается. Он запускается либо при загрузке, либо cron'ом. Скорректировать настройки его запуска не так уж сложно.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

v1k3ng
Сообщения: 98
ОС: centos/ubuntu

Re: Cron только по будням

Сообщение v1k3ng » 21.10.2016 07:18

Вот два последних ответа наставили меня на путь истинный.
Спасибо!
Спасибо сказали:

Вернуться в «Администрирование для начинающих»