Cancelar e reiniciar uma certa rotina (script python)

2

Eu tenho uma pergunta sobre um programa que eu executo. De vez em quando, preciso reiniciar um determinado programa.

Nesse caso, geralmente corro:

screen ./run.sh arg1 arg2 "arg3" (tela, desde que eu não sei se há outra maneira de colocar algo em segundo plano - mas isso é outra coisa.)

Então, eu acho que eu poderia adicionar um cronjob que (via crontab -e ) que executa este programa (eu preciso de um bash-script para isso embora?) - Mas eu não sei como parar o processo. No momento estou cancelando-o através de CTRL + C depois que eu conectei novamente a sessão desanexada.

Eu estava pensando em kill it, mas não sei o id do processo quando inicio o programa. alguém pode me ajudar com isso? Estou usando o Ubuntu 12.04.

tl; dr

inicie o processo

espere 6 minutos

pare o processo

(re) inicia o processo (...)

Obrigado

    
por DasSaffe 20.07.2016 / 18:57

1 resposta

4

Se você não estiver se opondo a bash solutions, aqui está um script que faz o que você descreveu. Pode ser adicionado ao /etc/rc.local para ser executado em cada inicialização. Apenas chame como bash /path/to/script & de /etc/rc.local

#!/bin/bash

while true
do
    screen ./run.sh arg1 arg2 "arg3" & # start in background
    CMDPID=$! # get pid of that command
    TIME=$( date +%s  ) # get timestamp

    # next while loop just keeps checking time
    # We don't want to block up CPU with 
    # continuous sleep command
    while [ $(date +%s) -lt $(($TIME+360)) ];
    do  
      sleep 0.25
    done
    kill -TERM $CMDPID # kill that process

    # return to the top and repeat the procedure    
done
    
por Sergiy Kolodyazhnyy 20.07.2016 / 19:33