Cron não consegue encontrar arquivo à noite? [duplicado]

1

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
    
por Scironic 24.04.2015 / 21:07

1 resposta

1

Acontece que esta foi a resposta: Cron falha à noite

Eu estou executando isso no meu servidor (que eu só ssh em) durante a noite. Portanto, ter uma unidade inicial criptografada significa que, quando eu não estou conectado, nada está acessível a nada fora de home , incluindo cron .

Mudei meu script para /usr/local/bin (pode haver um lugar melhor para colocá-lo, mas não senti nada mais adequado) que, aliás, significava que eu poderia chamá-lo sem qualquer caminho (supondo que você ve definido a variável PATH ).

Agora tudo corre como deveria.

    
por Scironic 25.04.2015 / 07:57