web-dev-qa-db-fra.com

Annuler et redémarrer une certaine routine (script python)

J'ai une question concernant un programme que je lance. De temps en temps, je dois redémarrer un certain programme.

Pour ce cas, je cours habituellement:

screen ./run.sh arg1 arg2 "arg3" (écran, car je ne sais pas s'il existe un autre moyen de mettre quelque chose en arrière-plan - mais c'est une autre chose.)

Donc, je pense que je pourrais ajouter un fichier cronjob qui (via crontab -e) gère ce programme (ai-je besoin d'un script bash pour cela?) - Mais je ne sais pas comment arrêter le processus. En ce moment je l'annule via CTRL + C après avoir joint la session détachée.

Je pensais à killer, mais je ne connais pas le processus-id lorsque je lance le programme. Quelqu'un peut-il m'aider avec ça? J'utilise Ubuntu 12.04.

tl; dr

lancer le processus

attendez 6 minutes

arrêter le processus,

(re) démarrer le processus (...)

Merci

2
DasSaffe

Si vous ne vous opposez pas aux solutions bash, voici un script qui décrit ce que vous avez décrit. Il peut être ajouté à /etc/rc.local pour s'exécuter à chaque démarrage. Appelez-le simplement comme bash /path/to/script & depuis /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
4
Sergiy Kolodyazhnyy