我面临的一个问题是crontab没有在Raspberry Pi3上安装的Raspbian GNU / Linux 9.4(stretch)中运行python脚本 . 我对这个主题进行了大量的研究,例如按照https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working/24527#24527中的故障排除指南,但它们都没有解决我的问题 .
我想要运行的python脚本位于
/home/pi/Documents/Fork_BookManager.py
我确保任何人都可以执行,阅读和更改上述文件的内容 .
我可以写终端通过终端运行这个文件
usr/bin/python3 /home/pi/Documents/Fork_BookManager.py
我知道文件正在运行,因为 Fork_BookManager.py
正在使用selenium打开Web浏览器,我看到这个Web浏览器正在打开 . 从终端运行 Fork_BookManager.py
文件时没有观察到错误 .
在终端执行
crontab -e
使用nano作为编辑器,我首先验证了crontab的实际工作
* * * * * env > /home/pi/Documents/env.output
一分钟后, Documents
文件夹中有一个带有以下参数的env.output文件 .
LANGUAGE=da_DK.UTF-8
HOME=/home/pi
LOGNAME=pi
PATH=/usr/bin:/bin
LANG=da_DK.UTF-8
SHELL=/bin/sh
LC_ALL=da_DK.UTF-8
PWD=/home/pi
我注意到来自crontab的路径与从终端调用env时的路径不同,因为如果我从终端调用env来调用以下路径:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin目录:在/ usr / bin中:/ sbin目录:/ bin中:在/ usr /本地/游戏:在/ usr /游戏
所以我知道crontab -e正在工作,因为否则我不会在Documents文件夹中创建env.output文件 . 我继续从终端调用 crontab -e
并将env中的路径复制到crontab中,如下所示
PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
* * * * * /usr/bin/python3 /home/pi/Documents/Fork_BookManager.py
保存脚本并等待 . 什么都没发生 .
为了总结,我有:
-
确保
Fork_BookManager.py
是可执行的 -
已验证crontab正在运行
-
更新了env到crontab脚本的路径
这是导致crontab按照本指南工作的三大原因https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working/24527#24527
它仍然没有用 . 我错过了什么?是否有更好的实践来实现我想要的,即每分钟执行一次python脚本而不直接从python脚本本身执行它,例如带有 time.sleep(60)
的while循环
附加信息
我甚至尝试在crontab脚本中扩展路径
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/usr/bin:/home/pi/Documents
试图指定python3和 Fork_BookManager.py
在哪个文件夹中 . 仍然没有运气 .