Surveiller un processus
Ce wiki a été archivé en 2018.
Le nouveau wiki se trouve à: ressources.labomedia.org Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia. |
Dans le cadre d'une installation numérique non stable (c'est à dire tout le temps), il est très utile, voire indispensable, de pouvoir surveiller un processus par son nom pour pour voir le relancer s'il n'est plus exécuté.
Nous utilisons pour cela un petit script en python proposé par Sam & Max :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim: ai ts=4 sts=4 et sw=4
"""
check if script is running else relaunch
"""
import sys
import os
from subprocess import Popen, call, PIPE
SUCCESS_EXIT_CODE=0
ERR_PS_SCRIPT_RUNNING=3
ERR_PID_SCRIPT_RUNNING=4
def check_ps_cmd(script_name):
try:
p1 = Popen(["ps", "auxww"], stdout=PIPE)
p2 = Popen(["grep", script_name], stdin=p1.stdout, stdout=PIPE)
p3 = Popen(["grep", "-v", "grep"], stdin=p2.stdout, stdout=PIPE)
output = p3.communicate()[0]
return output
except Exception, e:
print >>sys.stderr, "Execution failed:", e
return None
# process to check
if not check_ps_cmd('XXXXXXXXX'):
print "Rien ne va plus, mais tout va bien aller..."
retcode = call("YYYYYYYYY", shell=True)
# add here new processes to check...
- XXXXXXXXX est à remplacer par le nom du processus que vous voulez surveiller.
- YYYYYYYYY est à remplacer par la commande que vous voulez exécuter si le processus n'est pas trouvé.
Pour info, la commande ps auxww permet de lister tous les processus sans être limité aux 80 premiers caractères.
Il ne vous reste plus qu'à ajouter l’exécution de ce script dans la crontab et zou :
crontab -e
@reboot python /home/chezmoi/est_ce_que_tout_va_bien.py 0 */2 * * * python /home/chezmoi/est_ce_que_tout_va_bien.py
La première ligne lance le script au démarrage de l'ordinateur, donc lance l'install qui est forcément éteinte.
La seconde check toute les 2 heures.
Nommer un processus
Un petit coup de :
pip install setproctitle
Puis dans un script python :
import setproctitle
Pour donner un nom cool à votre processus
setproctitle.setproctitle("Ouais_bebe")
Ou pour obtenir le nom actuel de votre processus
setproctitle.getproctitle()