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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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).