Cron chamando um script de shell que chama um script python [RPi3]

1

Eu estou tentando executar repetidamente script (s) python usando Cron. Eu escrevi um script de shell que chama esse (s) script (s) de python. Eu fiz o script de shell como um executável e funciona perfeitamente no terminal e apenas clicando para executar.

Eu mudei o crowntab para chamar meu shell script em um intervalo específico - geralmente em um ou dois minutos para ver se está funcionando. No entanto, parece que meu script não está sendo executado corretamente.

Meu script python é longo e também tem funções python locais que ele chama. No entanto, eu criei um programa python curto, assim como um script de shell para chamá-lo com o propósito de descobrir se o cron funciona e, ao que parece, que ele está sendo chamado como pretendido.

Por que meu script python / shell não está sendo chamado corretamente para execução? Se eu chamar um script de shell, ainda preciso incluir o caminho para o cron ver?

Meu crontab:

20 13 * * * /my/full/path/to/the/shell_script.sh

Meu script / arquivo de shell:

#!/bin/bash
cd /full/path/to/the/python_script_folder
sudo python3 python_script.py argument

RPi3 / var / log / syslog:

Jan 23 20:13:01 raspberrypi cron[477]: (pi) RELOAD (crontabs/pi)
Jan 23 20:13:01 raspberrypi CRON[3851]: (root) CMD (/etc/myDevices/crontab.sh)
Jan 23 20:13:01 raspberrypi CRON[3854]: (pi) CMD (/my/full/path/to/the/shell_script.sh)

Qualquer ajuda é apreciada. Se você precisar de alguma informação adicional, por favor me avise. Obrigado.

    
por Gytis Bernotas 23.01.2017 / 22:30

1 resposta

0

Como @thrig mencionado - o sudo provavelmente está pedindo senha e bash -x dará informações adicionais sobre o que é executado e qual é a saída. Em primeiro lugar, é uma boa prática redirecionar a saída do cron, por exemplo

20 13 * * * /my/full/path/to/the/shell_script.sh > ${HOME}/cron.log 2>&1

Isso lhe dará a saída do script registrado no arquivo.

Eu gostaria de:

  1. coloque a entrada no crontab do usuário que precisa executá-lo.
  2. elimine o wrapper e defina o comando como 'python3 /path/to/script.py args'
por 24.01.2017 / 01:51