De crontab você está chamando python para executar seu script de shell (que não é um script python). mude o python para sh (ou ash ou bash) e acho que você vai achar que funciona melhor.
Tentando descobrir o (s) motivo (s) de que um script não está sendo executado corretamente no Cron.
Configure um shell para chamar um arquivo * .py a cada minuto com o seguinte (Removido abrindo e fechando # linhas):
* * * * * python /root/job.sh
O job.sh executa um arquivo * .py que verifica um módulo de temperatura I2C e envia os resultados para Ubidots. Funciona bem manualmente. Tentei reiniciar o Cron (iniciar, ativar e reiniciar) e algumas outras variações, como adicionar nome de usuário e caminhos completos para job.sh.
Aqui está o script:
#!/usr/bin/env python
python /root/temperature-monitor/main.py
O arquivo tem as seguintes propriedades (também tentou chmod a + x, u + x, 755, 666 e outros):
-rwx--x--x 1 root root 62 Jul 21 15:07 job.sh
Verificando o logread indica que o cron está sendo executado:
Fri Jul 21 15:38:00 2017 cron.info crond[3464]: USER root pid 3491 cmd /root/job.sh
Criei um arquivo de log e direcionei a saída para ele com o seguinte:
* * * * * python /root/job.sh >/root/test1.log 2>&1
A saída no arquivo contém o seguinte:
-ash: crontab.txt: not found
Mas o crontab.txt está listado em / etc / crontabs como root (nome do arquivo) com o trabalho listado nele.
Alguma idéia sobre o que tentar em seguida? Só não precisa ter um script em execução em um loop infinito após a inicialização.
Você não precisa colocar python
no crontab
. É um script de shell e python é executado dentro do script. Como o script é executável e possui uma linha shebang, você pode executar o próprio script como um comando.
* * * * * /root/job.sh