
設定
/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 每小時只運行一次?
答案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
另請參閱流程管理。