如何判断我的每小时cron作业是否已运行?

我在/etc/cron.hourly创建了一个名为ntpdate的文件

 #!/bin/sh /usr/sbin/ntpdate-debian date > /tmp/william_tmp date > /william_tmp date > ~/william_tmp echo test 

我也把Chmod 755做了这个文件。

但是,我无法判断该文件是否已运行!

该文件不是在3个目录中的任何一个中创建的。

如果我手动运行cd / && run-parts --report /etc/cron.hourly那么就会创建文件并获得echo。

任何人都可以推荐(理想情况下一步一步!)说明测试它是否正常工作?

cron的一个主要缺陷是cron在极其有限的shell环境中运行,因此很多变量都没有导出到环境中,主要是$ PATH。 确保使用所有可执行的绝对路径,包括echouptimedate等常用function,所有这些都需要使用完整路径( /bin/echo/bin/date/usr/bin/uptime )。 要确定可执行文件的路径,可以像这样使用which命令: which echo – 这将显示该工具的完整路径。

您应该查看/var/log/syslog日志文件。 如果一个cron运行,它将有一行如下:

 Jun 11 19:09:01 penguin CRON[17376]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete) Jun 11 19:17:01 penguin CRON[17799]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) 

有关故障排除提示,请参阅https://help.ubuntu.com/community/CronHowto#Troubleshooting_and_Common_Problems

尝试将脚本的第一行(解释器)更改为:

#!/bin/bash

我在过去也遇到过环境变量和PATH问题。 在将解释器更改为bash我的问题就消失了。

鉴于我在/etc/cron.hourly/添加了clearme.sh脚本

只需使用强大的egrepawk过滤终端中的 CRON任务:

 $ cat /var/log/syslog | egrep clearme | awk "{ print $1 }" > ~/Desktop/cronlog.txt 

输出看起来像:

 Jan 14 15:20:01 markets-dev CRON[10089]: (dminca) CMD (root /etc/cron.hourly/clearme.sh) Jan 14 15:40:01 markets-dev CRON[18042]: (dminca) CMD (root /etc/cron.hourly/clearme.sh) Jan 14 16:00:01 markets-dev CRON[22817]: (dminca) CMD (root /etc/cron.hourly/clearme.sh) Jan 14 16:20:01 markets-dev CRON[28183]: (dminca) CMD (root /etc/cron.hourly/clearme.sh) Jan 14 16:40:01 markets-dev CRON[411]: (dminca) CMD (root /etc/cron.hourly/clearme.sh) Jan 14 17:00:01 markets-dev CRON[5442]: (dminca) CMD (root /etc/cron.hourly/clearme.sh) Jan 14 17:20:01 markets-dev CRON[11935]: (dminca) CMD (root /etc/cron.hourly/clearme.sh) 

逐步解释一切:

  1. cat / var / log / syslog – 打印系统日志
  2. egrep clearme – 但只选择包含文本clearme的行
  3. awk“{print $ 1}” – 打印出包含文本清晰度的行
  4. >〜/ Desktop / cronlog.txt – 将结果输出到位于Desktop目录下的文件cronlog.txt中

第四步是可选的。 它只会在终端而不是文件中打印结果。