На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
nerve
Сообщения: 280
ОС: OpenBSD
Сообщение
nerve » 06.02.2015 17:04
можно было бы задать крон так:
каждую пятницу в 10-00 и далее проверять 2 или 4 это неделя. Если не вторая или не четвертая - то выходим.
Код: Выделить всё
0 10 * * 5 if [ "$((($(date +%d)-1)/7+1))" -ne "2" -o "$((($(date +%d)-1)/7+1))" -ne "4" ]; then exit 1;fi
но для месяца, начинающегося в субботу, это не работает, первая из вторых пятниц будет иметь 14 число
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 06.02.2015 17:13
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
nerve
Сообщения: 280
ОС: OpenBSD
Сообщение
nerve » 06.02.2015 17:31
то есть в кроне между День Недели и Число Месяца есть логическое И?
если совпала дата с нужным днем - переходим к выполнению, если нет - соответственно ничего.
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 06.02.2015 17:39
Нет, сейчас я заглянул в ман и понял, что ошибся. Между этими двумя полями как раз логическое или, в отличие от всех остальных. По крайней мере в vixie cron.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:
Сообщение
drBatty » 06.02.2015 18:49
nerve писал(а): ↑ 06.02.2015 17:04
каждую пятницу в 10-00 и далее проверять 2 или 4 это неделя. Если не вторая или не четвертая - то выходим.
немного непонятно, если 1ое число это среда, то это "нулевая неделя", или первая?
если "нулевая", то просто прибавьте к "дню месяца" "день недели первого числа месяца" и поделите сумму на семь. Получится "номер недели" начиная с №0.
ЗЫЖ
день недели date %u
день месяца date %d
и не нужно этих ваших -ne, в двойных скобках можно так и писать (( X+Y != 17 || Z+W == 23 ))
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 06.02.2015 18:52
drBatty писал(а): ↑ 06.02.2015 18:49
в двойных скобках можно так и писать (( X+Y != 17 || Z+W == 23 ))
В bash можно.
Вообще проще в crontab прописать числа месяца, а день недели проверять в скрипте, а не наоборот.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:
Сообщение
drBatty » 07.02.2015 10:47
Bizdelnick писал(а): ↑ 06.02.2015 18:52
Вообще проще в crontab прописать числа месяца, а день недели проверять в скрипте, а не наоборот.
я-бы в crontab вообще ничего не проверял, кроме времени суток. Запускал-бы каждый день скрипт.
Мне кажется, что писать скрипт в crontab == быдлокод. Это конечно ИМХО.
>В bash можно.
и это тоже. Запись в crontab типа
проста и понятна. Какой-то скрипт на bash. И не нужно ломать голову о том, какой шелл будет этот скрипт выполнять, это в самом скрипте записано(+ намёк в имени скрипта).