Iniciando um aplicativo após a inicialização do SO, depois reiniciando o aplicativo a cada hora a partir de então

4

Estou procurando um método para iniciar um aplicativo imediatamente após a inicialização. Este aplicativo expira após 1 hora. Gostaria de iniciar outra instância desse aplicativo 1 hora após a inicialização (após o tempo limite do aplicativo inicial). Eu estava pensando que Cron poderia ser configurado (habilmente) para conseguir isso. Curto de reiniciar o relógio do sistema para 00:00:00 na inicialização e depois executar o Cron normalmente, existe uma maneira de fazer isso? Agradecemos antecipadamente.

Atualização: Com base no conselho do maulinglawn, usei o método Systemd.service. Especificamente, eu coloquei uma cópia do meu script python em /usr/bin/startVideo/startVideo.py. Em seguida, criou um arquivo de serviço em /lib/systemd/service/startVideo.service. Aqui está esse arquivo,

[Unit]
Description=starts video recorder

[Service]
Type=simple
ExecStart=/usr/local/bin/startVideo/startVideo.py
Restart=always

[Install]
WantedBy=multi-user.target

Finalmente eu corri,

sudo systemctl enable startVideo.service

para registrar o serviço. Isso será executado em um Raspberry Pi3 conectado a uma câmera de vídeo sem monitor ou teclado conectado. Eu só estou procurando o sistema para gravar vídeo 24/7 e ter a capacidade de reiniciar a si mesmo no caso de uma falha de energia. Outras sugestões? O "WantedBy" está configurado corretamente para esse tipo de aplicativo?

Massively grato por esta solução e desviar de Cron-ville.

    
por portsample 11.10.2016 / 08:03

2 respostas

2

Dada a sua descrição, gostaria de iniciar o aplicativo com systemd (pois é isso que tenho em todas as minhas máquinas) .service file .

Nesse arquivo de serviço, gostaria de apontar para um script que envolve seu aplicativo em um loop while simples. Algo parecido com isto:

#!/bin/sh

while true; do
    /path/to/your/application
done

Dessa forma, toda vez que seu aplicativo morre ("tempo limite"), ele será reiniciado sozinho, uma vez que a condição para o loop é sempre verdadeira.

Esta é uma abordagem, e o mais simples que posso pensar, pode haver outras!

    
por 11.10.2016 / 08:23
0

Para aqueles que não estão apaixonados pelo systemd, uma invocação do programa ('shell-wrapper') em /etc/rc.local (por exemplo no Debian) com um pidfile em / var / run é boa. Algo como while true ; do $_cmd >/dev/null 2>&1 & sleep 3600 ; pkill $( cat /var/run/pgm.pid ) ; rm /var/run/pgm.pid ; done - supondo que seu daemon pode escrever seu próprio pid. Caso contrário, algum texto ps-fu é necessário apenas para sinalizar o processo pai, não seus filhos. homem ps.

    
por 11.10.2016 / 21:31

Tags