我正在嘗試從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
提交
取消