我是用 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