URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 87628
[ Назад ]

Исходное сообщение
"crontab работает очень странно"

Отправлено Oracul , 16-Дек-09 09:35 
Уважаемые пользователи,

я не могу справиться и понять следующую проблему:

есть 2 cronJob:

0  7  3-27  *    1-5 /home/oracle/testCron.sh >> /home/oracle/testCron.log
0  7  3-27  *    6   /home/oracle/testCron2.sh >> /home/oracle/testCron.log

задумано так, что первая должна работать с понедельника по пятницу (3-27 числа),
а вторая только в субботу.

Но почему то они срабатывают каждый день обе, причем и на солярисе и на линуксе:


>  CMD: /home/oracle/testCron2.sh >> /home/oracle/testCron.log
>  oracle 28353 c Wed Dec 16 07:00:00 2009
>  CMD: /home/oracle/testCron.sh >> /home/oracle/testCron.log
>  oracle 28354 c Wed Dec 16 07:00:00 2009

В чем тут дело? Я никак не могу понять!
Ведь в документации написано:

  crontab Entry Format
     A crontab file consists of lines of  six  fields  each.  The
     fields  are  separated by spaces or tabs. The first five are
     integer patterns that specify the following:

     minute (0-59),
     hour (0-23),
     day of the month (1-31),
     month of the year (1-12),
     day of the week (0-6 with 0=Sunday).

     Each of these patterns can be either  an  asterisk  (meaning
     all legal values) or a list of elements separated by commas.
     An element is either a number or two numbers separated by  a
     minus sign (meaning an inclusive range). Time specified here
     is interpreted in the timezone of the cron(1M) daemon, which
     is  set system-wide in /etc/default/init. Entries do not use
     the invoking user's timezone.

Особенно это:
     The specification of days  can
     be  made  by  two  fields  (day  of the month and day of the
     week). Both are adhered to if specified as a  list  of  ele-
     ments. See EXAMPLES.

Пример:
     This example runs a command on the first  and  fifteenth  of
     each month, as well as on every Monday:

     0 0 1,15 * 1

Помогите пожалуйста разобраться!

Спасибо большое!


Содержание

Сообщения в этом обсуждении
"crontab работает очень странно"
Отправлено PavelR , 16-Дек-09 10:00 
>[оверквотинг удален]
>     ments. See EXAMPLES.
>
>Пример:
>     This example runs a command on the
>first  and  fifteenth  of
>     each month, as well as on every
>Monday:
>
>     0 0 1,15 * 1
>

Словарик купить, англицко-русский. Тут же ясно написано: 1 и 15 числа, а также каждый понедельник.

Соответственно, Ваши

>0  7  3-27  *    1-5 /home/oracle/testCron.sh >> /home/oracle/testCron.log
>0  7  3-27  *    6   /home/oracle/testCron2.sh >> /home/oracle/testCron.log

будут исполняться в любой день с 3 по 27, А ТАКЖЕ в 1-5 дни недели / в 6 день недели, соответственно.

>
>
>Помогите пожалуйста разобраться!
>
>Спасибо большое!


"crontab работает очень странно"
Отправлено Oracul , 16-Дек-09 10:04 
Спасибо за комментарий и совет купить англицко-русский словарик, но
пример был вырезан из manual'а, т.к. он похож на мою задачу:

с 3 по 27 число каждого месяца, с понедельника по пятницу - testCron.sh
с 3 по 27 число каждого месяца, только в субботу - testCron2.sh

Сегодня 16 декабря, среда - я ожидаю запуск только testCron.sh,
но запускаются обе задачи - Почему?


я описал свою пробему: мне над
>[оверквотинг удален]
>будут исполняться в любой день с 3 по 27, А ТАКЖЕ в
>1-5 дни недели / в 6 день недели, соответственно.
>
>
>
>>
>>
>>Помогите пожалуйста разобраться!
>>
>>Спасибо большое!


"crontab работает очень странно"
Отправлено Oracul , 16-Дек-09 10:10 
Только сейчас начинает доходить.

Так ли это, что условия по дням (day of month и day of week) выполняются по OR?

То есть для True нужно, что бы совпало либо day of month либо day of week получается?

Это катастрофа тогда :(


"crontab работает очень странно"
Отправлено Pahanivo , 16-Дек-09 11:14 
     This example runs a command on the first  and  fifteenth  of
     each month, as well as on every Monday:

     0 0 1,15 * 1

пеервод

Это екзампел запускает задачу в 1 и 15 число, а также КАЖДЫЙ ПОНЕДЕЛЬНЕГ!

это не катастрофа :
1) man date - выводи дату в нудном формате
2) в начала скрипта делаем преверку даты элементарными if/fi


"crontab работает очень странно"
Отправлено Oracul , 16-Дек-09 11:44 
>[оверквотинг удален]
>     0 0 1,15 * 1
>
>пеервод
>
>Это екзампел запускает задачу в 1 и 15 число, а также КАЖДЫЙ
>ПОНЕДЕЛЬНЕГ!
>
>это не катастрофа :
>1) man date - выводи дату в нудном формате
>2) в начала скрипта делаем преверку даты элементарными if/fi

Спасибо большое за совет !
Реализовал с помошью date + case

Спасибо!