问题描述
我在 /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
,则会创建文件并得到回声。
任何人都可以推荐(最好是循序渐进!)说明来测试它是否正常工作?
最佳办法
cron 的一个主要缺陷是 cron 在极其有限的 shell 环境中运行,因此许多变量没有导出到环境中,主要是 $PATH。确保您使用所有可执行文件的绝对路径,包括 echo
、 uptime
、 date
等常用函数都需要使用完整路径( /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