我面临的问题是crontab无法在Raspberry Pi3上安装的Raspbian GNU / Linux 9.4(拉伸)中运行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
正在使用硒打开Web浏览器,并且我看到此Web浏览器正在打开。从终端运行Fork_BookManager.py
文件时没有观察到错误。
在终端执行
crontab -e
我使用nano作为编辑器,首先验证了crontab确实由
工作* * * * * env > /home/pi/Documents/env.output
一分钟后,Documents
文件夹中有一个包含以下参数的环境输出文件。
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,我将具有以下路径 PATH = / usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / local / games:/ usr / games
所以我知道crontab -e在工作,因为否则我不会在Documents文件夹中创建env.output文件。我先从终端调用crontab -e
,然后将环境的路径复制到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)
其他信息
我什至尝试通过
扩展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
位于哪个文件夹中。仍然没有运气。