Inicia um programa usando o cron job

2

Um programa do sistema de visão é executado em um PC e eu preciso que ele esteja sempre em execução e no topo, mas às vezes pode acontecer um problema no programa e terminá-lo. Então, eu preciso de um script para verificar se o programa não está sendo executado e também para executá-lo.

Eu usei o cron job para a tarefa, eu escrevi esse cron job para executar o script:

*/1 * * * * /home/masoud/Desktop/vision3/cron.sh

e o cron.sh é:

cd "${0%/*}"
if pgrep -x "video" > /dev/null
then
    echo "running"
else
    /home/masoud/Desktop/vision3/video &
fi

O cron.sh faz o trabalho correto, o trabalho cron executa o script, mas ele termina brevemente. Eu posso ver meu LED da webcam ligado por um segundo. O que estou fazendo errado?

    
por Masoud 14.01.2017 / 10:15

1 resposta

3

As tarefas Cron não são realmente adequadas para gerenciar aplicativos de desktop. Seria melhor iniciar o aplicativo a partir de um script de shell em loop; na sua forma mais simples

#!/bin/sh
cd /home/masoud/Desktop/vision3
while :; do ./vision; done

Dessa forma, sempre que vision for interrompido, ele será iniciado novamente.

Você pode querer planejar uma "estratégia de saída" para quando realmente quiser interromper o programa. Isso faria:

#!/bin/sh
cd /home/masoud/Desktop/vision3
while [ ! -f no_vision ]; do ./vision; done

Então quando você quiser parar o programa,

touch /home/masoud/Desktop/vision3/no_vision

e feche-o - o script de shell também será interrompido.

    
por 14.01.2017 / 14:42

Tags