Назад | Перейти на главную страницу

cron.hourly скрипт выполняется несколько раз

Установка

У меня есть сценарий /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

Каждый час:

  1. Создать новую строку в файле журнала
  2. Добавить дату
  3. Тогда вывод 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

Пожалуйста, также смотрите Управление процессом.