(操作系统为 FreeBSD 8.1)
昨天我以 root 身份向 crontab 添加了两行:
0 7 * * * curl --silent http://username:[email protected]/cron/execute/process/verbose/true >>/home/www/dev_mydomain_tld/logs/cron_process.log 2>&1
0 8 * * * curl --silent http://username:[email protected]/cron/execute/process/verbose/true >>/home/www/dev_mydomain_tld/logs/cron_process.log 2>&1
以 root 身份从 shell 直接执行命令就可以了。它只会执行一些操作,并发送一些电子邮件。第二次运行不应发送任何电子邮件,这是由脚本处理的。因此,第二行仅供我测试,确保第二次运行不会发送相同的电子邮件。
今天早上 7 点和 8 点,我一直在等电子邮件,但是没有。
cron 日志告诉我以下内容
Feb 8 07:00:00 webserver /usr/sbin/cron[50878]: (root) CMD ( /usr/local/bin/bsdsar_gather)
Feb 8 07:00:00 webserver /usr/sbin/cron[50881]: (root) CMD (newsyslog)
Feb 8 07:00:00 webserver /usr/sbin/cron[50882]: (root) CMD (/usr/libexec/atrun)
Feb 8 07:00:00 webserver /usr/sbin/cron[50883]: (operator) CMD (/usr/libexec/save-entropy)
Feb 8 07:00:00 webserver /usr/sbin/cron[50886]: (root) CMD (curl --silent http://username:[email protected]/cron/execute/process/verbose/true >>/home/www/dev_mydomain_tld/logs/cron_process.log 2>&1)
[...]
Feb 8 08:00:00 webserver /usr/sbin/cron[51147]: (root) CMD ( /usr/local/bin/bsdsar_gather)
Feb 8 08:00:00 webserver /usr/sbin/cron[51149]: (root) CMD (newsyslog)
Feb 8 08:00:00 webserver /usr/sbin/cron[51150]: (operator) CMD (/usr/libexec/save-entropy)
Feb 8 08:00:00 webserver /usr/sbin/cron[51151]: (root) CMD (/usr/libexec/atrun)
Feb 8 08:00:00 webserver /usr/sbin/cron[51152]: (root) CMD (curl --silent http://username:[email protected]/cron/execute/process/verbose/true >>/home/www/dev_mydomain_tld/logs/cron_process.log 2>&1)
也/home/www/dev_mydomain_tld/logs/cron_process.log
没有显示任何变化,日期也没有变化。从 shell 运行更新就可以了。
答案1
curl 是否在 cron 设置的路径中?您应该在脚本中设置 PATH,或者使用 curl 的完整路径(即 /usr/local/bin/curl 或类似路径)。
看一下crontab(5)有关环境变量的详细信息。
答案2
root 有权访问的主系统 crontab(/etc/crontab)应该将用户名作为第六列。(普通用户的 crontab 文件则没有)