Eu criei um programa binário usando C ++. Agora, quero que esse programa seja executado continuamente. Estou usando o Ubuntu 14.04 LTS. Eu decidi usar o crontab para verificar se o programa está rodando, se não, então faça-o rodar.
O programa não pode rodar usando o usuário root, então eu tenho que executá-lo usando o usuário do Ubuntu.
Verifiquei que meu programa pode ser executado, abri o terminal e digite:
/home/ubuntu/CountThem/CountThem.out /home/ubuntu/CountThem/name_of_input_output_files.txt >/home/ubuntu/cout.txt &
Até este ponto, tudo funciona bem.
Eu criei o script para executar o programa, se ele não estiver em execução. Este é o meu script
#!/bin/bash
if pgrep -f '/home/ubuntu/CountThem/CountThem.out' > /dev/null
then
echo "CountThem is running"
else
echo "CountThem is stopped"
/home/ubuntu/CountThem/CountThem.out /home/ubuntu/CountThem/name_of_input_output_files.txt >/home/ubuntu/cout.txt &
echo "Test" >/home/ubuntu/cout.txt
fi
Eu criei o cron.
Eu executei sudo crontab -u ubuntu -e
e adicionei a linha:
* * * * * bash /home/ubuntu/restartcountthem > /home/ubuntu/logcountthem.txt
Observações:
/home/ubuntu/logcountthem.txt
é criado sempre que eu removê-lo. cout.txt
também é criado, então presumo que a linha que chama Countthem.out seja executada, mas o programa não inicia. /home/ubuntu/CountThem/CountThem.out ...
, a palavra "Teste" vai para cout.txt
./restartcountthem
no terminal, funcionará. Algum conselho?