Python 脚本在终端上作为 bash 命令运行,但不作为 cron 作业运行

Python 脚本在终端上作为 bash 命令运行,但不作为 cron 作业运行

我正在尝试在 Raspberry Pi(Stretch OS)上运行 python 脚本作为 cron 作业,但该脚本无法完全运行。

在 crontab -e 上,它是这样的:

*/1 * * * * python /home/pi/project/myfile.py >> /home/pi/project/logerrorfile.txt

日志文件显示,当脚本尝试从文本文件(即variable.txt)导入变量时,脚本无法运行,如下面的 myfile.py 代码段所示:

print("reading txt file for variable now") #log file prints this
text_file = open('variable.txt')
try:
    variable = text_file.readlines()
except:
    print("Error: unable to read variable from txt file") #This is not printed in the log file
print("variable read successfully from txt file") #This is also not printed in the log file

但是,当我在终端上将这个脚本作为 bash 命令运行时,它会顺利运行并且整个脚本都会被执行。为什么它在终端上作为 bash 命令可以正常工作,但作为 cron 作业却无法工作?我还尝试在 cron 作业命令中声明 python 执行器的绝对路径: #0,30 * * * * /usr/bin/python /home/pi/project/myfile.py >> /home/pi/project/logerrorfile.txt但该脚本仍然无法作为 cron 作业运行。因此,使用 cron 运行从文本文件读取变量的脚本似乎会出现问题。我很感激对此的任何建议。

答案1

正如steeldriver所提到的,解决方案是在脚本中声明variable.txt文件的绝对路径,以便cron工作。

相关内容