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. 在日志文件中创build一个新行
  2. 添加date
  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 

我试图replace并重新执行脚本,然后执行/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)未被input到任何其他crontabs,包括用户(或root),并且多个副本(备份)不会出现在/etc/cron.hourly

请注意,脚本中的最后一行可以简化为:

 { echo && /bin/date && /etc/init.d/msm start; } >> $LOGFILE 

另请参阅stream程pipe理 。