如何知道cron作业是否失败(运行Python命令)

3 投票
2 回答
1395 浏览
提问于 2025-04-16 17:24

当我运行这个命令时,输出的信息会被保存到 ok.txt 文件里:

 /home/admin/virtualenvs/x.com/bin/python /home/admin/www/x.com/x/app/manage.py help | tee ok.txt

我有这个定时任务:

* * * * * /home/admin/virtualenvs/x.com/bin/python /home/admin/www/x.com/x/app/manage.py help | tee ok.txt

但是 ok.txt 文件里什么都没有保存。

当我查看定时任务的日志时:

> sudo grep CRON /var/log/syslog

May 10 22:16:01 localhost CRON[23397]: (admin) CMD (/home/admin/virtualenvs/x.com/bin/python /home/admin/www/x.com/x/app/manage.py help | tee ok.txt)

这里没有任何线索,我到底哪里出错了呢?谢谢大家的帮助。

2 个回答

0

首先,我注意到你的crontab语法不正确:

Example of job definition:
.---------------- minute (0 - 59)
|  .------------- hour (0 - 23)
|  |  .---------- day of month (1 - 31)
|  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
|  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
|  |  |  |  |
*  *  *  *  * user-name command to be executed

你缺少用户名。

第二点,不要假设你的.bashrc文件会被加载。在cron中,你只能使用文件顶部定义的环境变量。所以如果你的脚本使用了你在bashrc中定义的某些内容,可能会导致它无法正确执行。

1

试试这个:

* * * * * /home/admin/virtualenvs/x.com/bin/python /home/admin/www/x.com/x/app/manage.py help > /tmp/ok.txt 2&>1

这样做的话,所有的输出(包括错误信息和正常输出)都会放到你的 ok.txt 文件里。

撰写回答