Je dois developper un script permettant de vérifier la filiation d'un process A par rapport à un process B : si le process A est bien enclenché par B, je dois effectuer un traitement.
Seulement là ou 'je coince' c'est que le cahier des charges est assez "serré" :
notamment pour éviter au max les problèmes de portage, il ne doit pas y avoir de commande spécifiquement basé sur le PPID.
Je pensais à un truc de ce genre mais le soucis c'est que c'est codé un peu 'crade' à mon goût...
- coller le contenu du pstree du process A dans un fichier en supprimant les caracteres 'speciaux' (les traits et autres permettant de 'dessiner' la hierarchie)
- inverser le contenu du fichier de façon à ce que le process 'fils' soit en premiere ligne (c'est la fonction sed '1!G;h;$!d')
- prendre la 2eme ligne (qui contient normalement le pere du process en 1ere ligne)
- vérifier dans cette ligne que le PID correspond a celui du process pere
- si c'est ok, effectuer le traitement
Ce qui donnerait :
1 2 3 4 5 6 7 8 9 10
|
pstree -g 0 -p $PROC | sed 's/\\-+=//g;s/\\-+-//g;s/\\---//g' | sed '1!G;h;$!d'> fichier_tmp.txt
LIGNE_MOT=`cat fichier_tmp.txt | head -2 | tail -1`
echo $LIGNE_MOT | grep $PID_SCRIPT_A | grep $LOGIN
if [ $? = 0 ]
then
Echo "Traitement demarre ici"
fi |
Auriez-vous des conseils, astuces ou autres infos pour 'améliorer' ce truc en évitant au max les 'spécifications' d'OS (ca doit tourner sur tout Unix).
Partager