Como o steeldriver mencionou, a solução é declarar o caminho absoluto para o arquivo variable.txt no script para o cron funcionar.
Eu estou tentando executar um script python no meu Raspberry Pi (Stretch OS) como uma tarefa do cron, mas o script não funciona completamente.
No crontab -e, lê-se assim:
*/1 * * * * python /home/pi/project/myfile.py >> /home/pi/project/logerrorfile.txt
O arquivo de log mostra que o script não é executado quando tenta importar uma variável de um arquivo de texto (ou seja, variável.txt) como mostrado em um segmento do código myfile.py abaixo:
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
No entanto, quando eu executo este script como um comando bash no terminal, ele corre bem e todo o script é executado. Por que isso funciona corretamente como um comando bash no terminal, mas não funciona como um cron job? Também tentei indicar o caminho absoluto do meu executor python no meu comando de tarefa cron para: #0,30 * * * * /usr/bin/python /home/pi/project/myfile.py >> /home/pi/project/logerrorfile.txt
, mas o script ainda não funciona como uma tarefa cron. Portanto, parece que usar o cron para executar um script que lê uma variável de um arquivo de texto se torna problemático. Eu aprecio qualquer conselho sobre isso.
Como o steeldriver mencionou, a solução é declarar o caminho absoluto para o arquivo variable.txt no script para o cron funcionar.
Tags cron text debian raspberry-pi variable