我正在尝试从cron运行Django管理命令。我正在使用virtualenv使我的项目沙盒化。
我在这里和其他地方都看到了一些示例,这些示例显示了从virtualenv内部运行的管理命令,例如:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
但是,即使syslog在任务应该启动时显示一个条目,该任务也不会实际运行(脚本的日志文件为空)。如果我从外壳程序手动运行该行,它将按预期工作。
目前,我可以使命令通过cron运行的唯一方法是将这些命令分解并放在一个笨拙的bash包装器脚本中:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /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调用激活脚本没有任何作用。这是可行的,因此在演出中如此。
env
并将export
它们全部转储到您从crontab调用的bash脚本包装中。