我正在通过SSH连接到服务器。在我的项目中,我有一个/scripts
文件夹,其中有我要运行的python脚本。为了执行它,我必须首先激活我的虚拟环境(我的venv
文件夹在/ scripts文件夹中)。我曾尝试安排几个不同的Cron作业来执行此操作,但是没有一个人执行该脚本。我知道任务正在执行,因为它们已登录/var/log/syslog
。
到目前为止,我尝试过的是:
* * * * * cd /path/to/project/ && source /path/to/project/scripts/venv/bin/activate && /path/to/project/scripts/script_to_run.py arguments
* * * * * python /path/to/project/scripts/script_to_run.py arguments
* * * * * /path/to/project/scripts/venv/bin/python /path/to/project/scripts/script_to_run.py arguments
* * * * * /usr/bin/python && source /path/to/project/scripts/venv/bin/activate && /path/to/project/scripts/script_to_run.py arguments
(我并不是想每时每刻都运行所有命令,只需将* * * * *放在这里每个任务的开头)。
我也曾尝试制作.sh脚本并为此进行cron作业(并尝试将错误记录在cronjob.log
中,但那也不起作用):
* * * * * bash /path/to/project/scripts/script.sh >/tmp/cronjob.log 2>&1
script.sh :
#!/bin/bash
source /path/to/project/scripts/venv/bin/activate
python /path/to/project/scripts/script_to_run.py arguments
它是可执行文件,可以从终端运行它。
我的项目目录:
project
scripts
venv
bin
activate
python
script_to_run.py
script.sh