понедельник, 22 ноября 2010 г.

CRON в Solaris

Вы-таки будете смеяться, но демон cron в Solaris устроен несколько не так, как он устроен в подавляющем большинстве UNIX-like систем. 

Прикол в следующем. Если вам нужно указать интервальное выполнение задания с периодичностью, скажем, 5 минут, то написать:

*/5 * * * * ваше_задание.sh


или

5 * * * * ваше_задание.sh

нифига недостаточно. В первом случае задание просто игнорируется, а во втором случае оно будет срабатывать в каждые 5 минут начала каждого часа. Опаньки.

Чтобы указать периодичность выполнения в 5 минут нужно прямо перечислить:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/bin/script.sh

Только в этом случае скрипт будет выполняться каждые 5 минут, что нетрудно проверить через /var/cron/log:

CMD: /usr/local/bin/script.sh
root 2827 c Sun Nov 21 05:30:00 2010
root 2826 c Sun Nov 21 05:30:01 2010
root 2827 c Sun Nov 21 05:30:01 2010
CMD: /usr/local/bin/script.sh
root 2879 c Sun Nov 21 05:35:00 2010
root 2879 c Sun Nov 21 05:35:01 2010
CMD: /usr/local/bin/script.sh
root 2930 c Sun Nov 21 05:40:00 2010
root 2930 c Sun Nov 21 05:40:01 2010
CMD: /usr/local/bin/script.sh
root 2982 c Sun Nov 21 05:45:00 2010
root 2982 c Sun Nov 21 05:45:01 2010
CMD: /usr/local/bin/script.sh
root 3033 c Sun Nov 21 05:50:00 2010
root 3033 c Sun Nov 21 05:50:01 2010
CMD: /usr/local/bin/script.sh
root 3084 c Sun Nov 21 05:55:00 2010
root 3084 c Sun Nov 21 05:55:01 2010
CMD: /usr/local/bin/script.sh
root 3136 c Sun Nov 21 06:00:00 2010
root 3136 c Sun Nov 21 06:00:00 2010
CMD: /usr/local/bin/script.sh
root 4669 c Sun Nov 21 06:05:00 2010
root 4669 c Sun Nov 21 06:05:01 2010
CMD: /usr/local/bin/script.sh
root 4991 c Sun Nov 21 06:10:00 2010
root 4991 c Sun Nov 21 06:10:01 2010
CMD: /usr/local/bin/script.sh
root 5100 c Sun Nov 21 06:15:00 2010
root 5100 c Sun Nov 21 06:15:01 2010
CMD: /usr/local/bin/script.sh
root 5217 c Sun Nov 21 06:20:00 2010
root 5217 c Sun Nov 21 06:20:01 2010
CMD: /usr/local/bin/script.sh
root 5300 c Sun Nov 21 06:25:00 2010
root 5300 c Sun Nov 21 06:25:01 2010 



Вот такая забавная особенность.


Да, забыл написать версию Solaris:


root @ blade / # uname -a
SunOS blade 5.10 Generic_144488-03 sun4u sparc SUNW,Sun-Blade-100