Форум русскоязычного сообщества Ubuntu


Автор Тема: Cron первая суббота месяца.  (Прочитано 747 раз)

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

Оффлайн The Kaban

  • Автор темы
  • Участник
  • *
  • Сообщений: 114
    • Просмотр профиля
Cron первая суббота месяца.
« : 15 Февраль 2016, 17:41:50 »
Здравствуйте!
Помогите пожалуйста разобраться.
Как можно выполнить команду в Cron, каждую первую или последнею субботу месяца в 04:00?
Вот так: 0 4 * */1 6 получается каждую субботу, а мне надо первую или последнею.
Спасибо!

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 11169
    • Просмотр профиля
Re: Cron первая суббота месяца.
« Ответ #1 : 15 Февраль 2016, 17:54:07 »
Что-то типа этого

0 4 1-7,21-31 * 6

Но могут попасть две субботы в конце месяца. Зависит от длины месяца. Если сделать 3 строки для месяцев с соответствующей длиной, то будет точно первая и последняя.

0 4 1-7,25-31 1,3,5,7,8,10,12 6
0 4 1-7,24-30 4,6,9,11
0 4 1-7,22-28 2

Это не считая вискосных годов.
« Последнее редактирование: 15 Февраль 2016, 17:59:01 от Pilot6 »
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5664
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Cron первая суббота месяца.
« Ответ #2 : 15 Февраль 2016, 17:58:45 »
Цитата: man crontab
0 4 1-7 * *    test $(date +\%u) -eq 6 && команда
« Последнее редактирование: 15 Февраль 2016, 18:10:46 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 11169
    • Просмотр профиля
Re: Cron первая суббота месяца.
« Ответ #3 : 15 Февраль 2016, 18:00:16 »
Azure,
Это будет только первая суббота. И незачем делать test, если день недели cron и так умеет.

Вы сделали то же самое что

0 4 1-6 * 6

При этом если суббота будет 7 числа, то ничего не сработает.
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5664
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Cron первая суббота месяца.
« Ответ #4 : 15 Февраль 2016, 18:01:03 »
Pilot6, не все так однозначно: если указаны день и день недели — то выполняется и тогда И тогда.
Цитата: man crontab
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 (i.e., aren't *), the command will be run when either field  matches  the
       current time.  For example,
       ``30  4  1,15  * 5'' would cause a command to be run at 4:30 am on the 1st and 15th of each month, plus
       every Friday. One can, however, achieve the desired result by adding a test to  the  command  (see  the
       last example in EXAMPLE CRON FILE below).
Это будет только первая суббота.
надо первую или последнею.
7-е число поправил.
« Последнее редактирование: 15 Февраль 2016, 18:13:56 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 11169
    • Просмотр профиля
Re: Cron первая суббота месяца.
« Ответ #5 : 15 Февраль 2016, 18:02:26 »
Azure,
Это да, есть такое дело. Ну тогда все равно получается 3 строки, но вместо 6 действительно надо проверять еще раз.
Проще скрипт сделать, который сам это дело будет проверять и его поставить в cron хоть на каждый день.
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн The Kaban

  • Автор темы
  • Участник
  • *
  • Сообщений: 114
    • Просмотр профиля
Re: Cron первая суббота месяца.
« Ответ #6 : 15 Февраль 2016, 18:17:09 »
Pilot6,Azure,
Спасибо за ответы!
Скажите что в итоге лучше использовать, 0 4 1-7 * *    test $(date +\%u) -eq 6 && команда или в самом скрипте прописать условие?
СПС!


Оффлайн Laa-Laa

  • Любитель
  • *
  • Сообщений: 84
  • Это трудно объяснить, но сложно понять.
    • Просмотр профиля
    • http://any.mooo.com
Re: Cron первая суббота месяца.
« Ответ #7 : 15 Февраль 2016, 18:33:27 »
Гугл:
0 1 1-7 * * [ "$(date '+\%u')" -eq 7 ] && echo "Эта надпись выводится каждое первое воскресенье каждого месяца в 1:00"
Помогаю клоуну набрать 20к сообщений.
danger! (будугуруUbuntu пользователь под набледением.)

Оффлайн The Kaban

  • Автор темы
  • Участник
  • *
  • Сообщений: 114
    • Просмотр профиля
Re: Cron первая суббота месяца.
« Ответ #8 : 15 Февраль 2016, 18:35:07 »
Laa-Laa,Pilot6,Azure,
Спасибо!


Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5664
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Cron первая суббота месяца.
« Ответ #9 : 15 Февраль 2016, 18:56:15 »
C точки зрения экономии запусков проверять можно субботы0 4 * * 6    test $(date +\%d) -le 7 && командаmax 5 запусков(обычно 4) против 7
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.111 секунд. Запросов: 24.