我在ubuntu环境中为根用户设置了cronjob,如下所示,输入crontab-e
34 11 * * * sh /srv/www/live/CronJobs/daily.sh
0 08 * * 2 sh /srv/www/live/CronJobs/weekly.sh
0 08 1 * * sh /srv/www/live/CronJobs/monthly.sh
但克朗乔恩不跑。我试过用
pgrep cron公司
这个shell脚本调用python文件并用来发送电子邮件。运行python文件是可以的。它没有错误,但是cron没有运行。daily.sh文件中包含以下代码。
python /srv/www/live/CronJobs/daily.py
python /srv/www/live/CronJobs/notification_email.py
python /srv/www/live/CronJobs/log_kpi.py
世界贸易基金会?!我的亲信不跑?!
以下是调试不运行cronjobs的清单指南:
ps ax | grep cron
并查找cron。service cron start
或service cron restart
* * * * * /bin/echo "cron works" >> /tmp/file
/tmp
中当前不存在的唯一文件名应始终可写。/var/log/cron.log
或/var/log/messages
是否有错误。grep CRON /var/log/syslog
/var/log/cron
chmod +x /var/www/app/cron/do-stuff.php
30 1 * * * command > /dev/null 2>&1
>/dev/null 2>&1
来重新启用标准输出或标准错误消息输出;或者可能重定向到您具有写入权限的位置的文件:>>cron.out 2>&1
将标准输出和标准错误附加到调用用户主目录中的cron.out
。仍然不工作?哎呀!
/etc/default/cron
中EXTRA_OPTS="-L 2"
service cron restart
tail -f /var/log/syslog
查看执行的脚本/etc/rsyslog.d/50-default.conf
中cron.crit /var/log/cron.log
行sudo /etc/init.d/rsyslog reload
/var/log/cron.log
并查找详细的错误输出Cronjob语法
此语法仅对
root
用户正确。常规用户crontab
语法没有用户字段(常规用户不允许像任何其他用户一样运行代码)Crontab命令
crontab -l
crontab -e
,对于特定用户:crontab -e -u agentsmith
crontab -r
我终于找到了解决办法。解决方法如下:
不要在要通过crontab执行的python脚本中使用相对路径。 我却做了这样的事:
不要抑制crontab代码,而是使用mailserver检查用户的邮件。这给了我们更清晰的洞察力。
crontab失败的另一个原因是:对
%
字符的特殊处理。从man file:
在我的特殊情况下,我使用
date --date="7 days ago" "+%Y-%m-%d"
来生成脚本的参数,但它却在无声地失败。当我检查syslog
并看到命令在%
符号处被截断时,我终于发现发生了什么。你需要这样逃避:有关详细信息,请参见此处:
http://www.ducea.com/2008/11/12/using-the-character-in-crontab-entries/
相关问题 更多 >
编程相关推荐