Eu tenho um cron job escrito para root (estou escrevendo para um log em /var/log
, então preciso de permissão de root). O problema é que às vezes funciona e às vezes não funciona.
A tarefa cron é simplesmente chamar um script python em meu diretório inicial, e isso faz todo o trabalho pesado.
Eu defino o trabalho para sair no meio da noite para que ele não interfira no que estou fazendo e para que a API com a qual ele interage tenha menos chances de mudar (a API é atualizada ao longo do dia) .
Mas toda manhã eu verifico os logs e obtenho o seguinte erro:
python3: can't open file '/home/myUser/path/to/the/main.py':
[Errno 2] No such file or directory
Minha resposta para isso é alterar o tempo no crontab para alguns minutos além do tempo em que estou verificando os logs, aguardar alguns minutos e o arquivo começar a ser executado. A única coisa que eu mudo é o tempo, e de repente funciona.
Então, eu sei, com certeza, que o arquivo existe.
Eu tentei uma variação de horários durante a noite ( 30 23 * * *, 01 01 * * *, 10 02 * * *
) nenhum funcionou, mas sempre que eu faço isso por 2 minutos depois do check-in de manhã, tudo bem.
Aqui está o crontab como está atualmente:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
01 01 * * * python3 /home/myUser/path/to/the/main.py >> /var/log/thisjobs.log 2>&1
Também vale a pena mencionar que há uma nova linha adicional após este trabalho (ouvi dizer que é necessário).
Alguém já viu isso antes? Existe alguma coisa que eu possa tentar obter este arquivo encontrado sem eu ter que alterar manualmente o script de cada vez?
EDIT: aqui está minha saída env
para cron
:
LANGUAGE=en_GB:en
HOME=/root
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
LANG=en_GB.UTF-8
SHELL=/bin/sh
PWD=/root
Também pensei em mencionar que tentei usar o seguinte comando (após o tempo) sem sucesso (mesmo erro, mas somente com o main.py
em vez do caminho completo):
cd /home/myUser/path/to/the; python3 main.py