我正在尝试从cron运行Django管理命令。我正在使用virtualenv将我的项目沙盒化。我在这里和其他地方都看到了一些示例,这些示例显示了在virtualenv内部运行管理命令的过程,例如:0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg但是,即使syslog在任务应该启动时显示一个条目,该任务也不会实际运行(脚本的日志文件为空)。如果我从外壳程序手动运行该行,它将按预期工作。当前,我可以通过cron来运行命令的唯一方法是将命令分解并将其放入笨拙的bash包装器脚本中:#!/bin/shsource /home/user/project/env/bin/activatecd /home/user/project/./manage.py command arg编辑:ars提出了一种有效的命令组合:0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg至少就我而言,为virtualenv调用激活脚本没有任何作用。这是可行的,因此在演出中如此。
3 回答
明月笑刀无情
TA贡献1828条经验 获得超4个赞
与其摆弄特定于virtualenv的shebang,不如摆PATH在crontab上。
在激活的virtualenv中,运行以下三个命令,并且python脚本应该可以正常工作:
$ echo "PATH=$PATH" > myserver.cron
$ crontab -l >> myserver.cron
$ crontab myserver.cron
现在,crontab的第一行应如下所示:
PATH=/home/me/virtualenv/bin:/usr/bin:/bin: # [etc...]
添加回答
举报
0/150
提交
取消