Python:如何配置 crontab 以在虚拟环境中运行脚本

Python:如何配置 crontab 以在虚拟环境中运行脚本

我是用 linux 制作 cronjobs 的新手。我的目标是在自己的虚拟环境中执行 python 脚本。

为此,我首先制作了一个名为的 shell 脚本推特.sh其内容是:

source /home/josecarlos/Workspace/python/robot2-rss/venv/bin/activate 
python /home/josecarlos/Workspace/python/robot2-rss/main.py R,1

而它的路线是:

/home/josecarlos/Workspace/python/robot2-rss

由于它们的路径,我们可以访问源代码和 python 命令/usr/bin包含在 PATH 变量中,如下图所示:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin

我的 cronjob 的配置是:

# m h  dom mon dow   command
*/1 * * * * /home/josecarlos/Workspace/python/robot2-rss/twitter.sh

但是,我的 cron 作业的这种配置不起作用,我不知道我做错了什么:(

编辑一:

我已将 twitter.sh 脚本修改为以下新代码:

#!/bin/sh

/home/josecarlos/Workspace/python/robot2-rss/venv/bin/python /home/josecarlos/Workspace/python/robot2-rss/main.py R,1

如果我直接运行脚本工作正常,但使用 cron 作业则不起作用! :(

编辑二:

在 twitter.sh 的最后一次修改中,我只是调用了我的 python 脚本,我修改了我的 cron 作业以直接调用 python 脚本,如下所示:

# m h  dom mon dow   command
* * * * * /home/josecarlos/Workspace/python/robot2-rss/venv/bin/python /home/josecarlos/Workspace/python/robot2-rss/main.py R,1

它不起作用:(我不知道会发生什么:(

答案1

设置适当的外壳

编辑 twitter.sh

#!/bin/bash
PATH=....
source /home/josecarlos/Workspace/python/robot2-rss/venv/bin/activate 
python /home/josecarlos/Workspace/python/robot2-rss/main.py R,1

请务必设置 PATH。

记录命令结果

在 crontab 中添加登录部分

*/1 * * * * /home/josecarlos/Workspace/python/robot2-rss/twitter.sh >> /var/log/twitter.log 2>&1

如果出了问题,你可以看看/var/log/twitter.log

相关内容