Eu tenho um script (activate.sh) que verifica um script python em execução e, se não for encontrado, o reinicia
#!/bin/bash
ps auxw | grep my_script | grep -v grep > /dev/null
if [ $? != 0 ]
then
echo "Process is not running."
source /path/to/venv/bin/activate #start python environment
export PYTHONUNBUFFERED=yes #to allow for running log output
python /path/to/my/script/my_script.py >> /path/to/my/script/logs/output.log &
fi
Este parece ser um modelo de script bastante básico encontrado on-line para reiniciar um serviço com falha.
Eu então configuro no crontab para rodar a cada minuto. No entanto, por algum motivo, o script está detectando apenas o serviço (a linha grep) se eu o executar no diretório local em que ele está.
Se eu executar /my/path/to/script/activate.sh (do meu diretório pessoal), nada e o crontab não está iniciando o serviço