我试图通过安装在Ubuntu上的/etc/cron.d/mycron的crontab运行Django管理命令。在
我首先通过将以下内容写入/etc/cron.d/mycron来测试我的基本设置:
* * * * * root command echo "Test $(date)" 2>&1 >> /tmp/mycron.log
我确认了/tmp/mycron.log日志每分钟更新一次并包含预期的文本。在
然后,我使用实际的管理命令尝试了以下变体:
^{pr2}$而且,即使生成了日志文件,它也不包含管理命令输出的预期日志文本。在
在每个变体之后,我运行sudo touch /etc/cron.d/
来重新加载cron。即使我的Python代码中有错误,我也希望记录一些错误消息。在
我已经检查了tail -f /var/log/syslog
,它显示的唯一错误是那些不以“root”开头的crontab,它给了我一个错误:
Error: bad username; while reading /etc/cron.d/mycron
对于其他人,我看到的是:
Oct 7 10:54:01 localhost CRON[27805]: (root) CMD (/path/to/my/script/manage.py mycommand 2>&1 >> /tmp/mycron.log)
但是日志中没有写入任何内容,我希望发生的数据库更改也没有发生。我做错什么了?在
您需要的输出要么在
/tmp/mycron.log
中,要么邮寄到root
。在root
下键入mail
进行检查。在还有,你为什么要尝试不同的变体?crontab文件的语法是严格定义的(
man crontab -S 5
),对于/etc/crontab它是:对于个人crontab,它是:
^{pr2}$不能在/etc/crontab中省略用户名,也不能用
/usr/bin/python
代替用户名。在您也不需要单词
command
,它只会起作用,因为有一个内置的bash函数,它显然只是从它的参数运行一个命令。在正确的行必须是:
在第一种情况下,
manage.py
必须是可执行的(chmod +x manage.py
),并且它的第一行必须是#!/usr/bin/python
,或者不管您的python解释器路径是什么。在相关问题 更多 >
编程相关推荐