Pesquisa
Talvez eu esteja usando o vocabulário incorreto, mas não consigo encontrar uma cópia do meu problema. Eu estou tentando executar dois programas dentro do meu shell script e o cron está claramente executando o primeiro script, mas não o segundo.
Meta
Eu tenho dois scripts python, views.py
que é executado como um servidor web e housekeeping.py
que cuida de algumas verificações de limpeza e atualização com as quais a interface da web não precisa se preocupar. Atualmente, eles podem ser iniciados manualmente usando sudo /home/ubuntu/start_server.sh
e tudo funciona perfeitamente. Estou usando a porta 80, portanto, preciso executar como root.
Script Bash
O script completo:
#!/bin/bash
/home/ubuntu/py3env/bin/python /home/ubuntu/flask_portal/views.py &
/home/ubuntu/py3env/bin/python /home/ubuntu/flask_portal/housekeeping.py &
Meu entendimento é que o &
fará com que os aplicativos sejam executados em segundo plano.
Quando executo manualmente, o script de shell funciona perfeitamente.
Crontab
Para abrir o crontab, estou usando
sudo crontab -u root -e
Como eu disse acima, estou usando a porta 80, por isso preciso executar meu script como root.
Dentro do arquivo crontab, eu tenho uma única entrada:
@reboot /home/ubuntu/start_server.sh
Resultados
Quando eu executo com a mão, ambos os scripts começam perfeitamente. Quando eu permito que o servidor reinicie e execute o próprio script start_server.sh
, o servidor web views.py
funciona muito bem, mas housekeeping.py
nunca inicia (estou fazendo o registro dentro desse arquivo, por isso não está gerando o próprio arquivos). Além disso, quando executo python aux | grep python
, vejo que views.py
e housekeeping.py
estão sendo executados.