
Установка
У меня есть скрипт /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
and/or /etc/init.d/crond restart
.
Все перезапускается без ошибок, и скрипт запускается каждый час, как и должен... просто со всеми дополнительными строками.
Как мне это отследить, чтобы лучше понять, что происходит, и исправить это так, чтобы msm-hourly запускался только один раз в час?
решение1
Убедитесь /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
Пожалуйста, смотрите такжеУправление процессом.