У меня есть сценарий /etc/cron.hourly/msm-hourly
который содержит это:
#!/bin/sh
LOGPATH='/opt/msm/servers/cronscripts'
LOGFILE="$LOGPATH/msm-start.log"
# Make restart dead servers
echo "" >> $LOGFILE && /bin/date >> $LOGFILE && /etc/init.d/msm start >> $LOGFILE
Каждый час:
msm start
командаОно работает работает из командной строки так же как в пределах /etc/cron.daily/
Результат при запуске из командной строки выглядит так:
[ msm-hourly.log ]
Thu Sep 12 20:56:51 UTC 2013
[ACTIVE] Server already started.
Однако если оставить его работать на некоторое время, результат каждой итерации будет выглядеть следующим образом:
[ msm-hourly.log ]
Thu Sep 12 20:56:51 UTC 2013
[ACTIVE] Server already started.
Thu Sep 12 21:01:02 UTC 2013
Thu Sep 12 21:01:02 UTC 2013
Thu Sep 12 21:01:02 UTC 2013
Thu Sep 12 21:01:02 UTC 2013
Thu Sep 12 21:01:02 UTC 2013
Thu Sep 12 21:01:02 UTC 2013
[ACTIVE] Server already started.
[ACTIVE] Server already started.
[ACTIVE] Server already started.
[ACTIVE] Server already started.
[ACTIVE] Server already started.
[ACTIVE] Server already started.
Вот результат /var/logs/cron
:
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19497]: starting msm-hourly
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19498]: starting msm-hourly
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19522]: starting msm-hourly
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19541]: starting msm-hourly
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19549]: starting msm-hourly
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19565]: starting msm-hourly
Sep 12 21:01:03 server run-parts(/etc/cron.hourly)[20166]: finished msm-hourly
Sep 12 21:01:03 server run-parts(/etc/cron.hourly)[20182]: finished msm-hourly
Sep 12 21:01:03 server run-parts(/etc/cron.hourly)[20243]: finished msm-hourly
Sep 12 21:01:03 server run-parts(/etc/cron.hourly)[20288]: finished msm-hourly
Sep 12 21:01:04 server run-parts(/etc/cron.hourly)[20310]: finished msm-hourly
Sep 12 21:01:04 server run-parts(/etc/cron.hourly)[20315]: finished msm-hourly
Я попытался заменить и переработать сценарий, за которым следует /etc/init.d/crond reload
и / или /etc/init.d/crond restart
.
Все перезапускается без ошибок, и скрипт запускается каждый час, как и должен ... только со всеми лишними строками.
Как мне отследить это, чтобы лучше понять, что происходит, и исправить это, чтобы msm-hourly запускался только один раз в час?
Проверьте /etc/crontab
чтобы убедиться, что линия для cron.hourly
аналогичен приведенному ниже (обратите внимание, что только поле минут имеет номер, а остальные - звездочки) и появляется только один раз.
17 * * * * root cd / && run-parts --report /etc/cron.hourly
Также убедитесь, что ваш скрипт (или /etc/cron.hourly) не введен ни в какие другие crontab, включая пользовательский (или root), и что несколько копий (резервных копий) не отображаются в /etc/cron.hourly
.
Обратите внимание, что последнюю строку в вашем скрипте можно упростить до:
{ echo && /bin/date && /etc/init.d/msm start; } >> $LOGFILE
Пожалуйста, также смотрите Управление процессом.