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 à kill
er, 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
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