Linux
Python:如何配置 crontab 以在虛擬環境中執行腳本
我是用 linux 製作 cronjobs 的新手。我的目標是在自己的虛擬環境中執行 python 腳本。
為此,我首先製作了一個名為twitter.sh的 shell 腳本,其內容為:
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
我們可以訪問 source 和 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 作業不起作用!!!:(
編輯2:
在 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
而且它不起作用:(我不知道會發生什麼:(
設置適當的外殼
編輯 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