Bonjour,

J'ai commencé à écrire un script en korn shell qui tue tous les processus fils (sur tous les les niveaux) à partir d'un processus donné (cad tous les processus que le père à crée). Le meileur moyen (je pense) est de le faire en récursif mais j'ai un peu de mal. Qq1 peut il m'éclaircir ?

MErci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
#!/bin/ksh
 
 
killAll(){
liste=`echo ${*##*$1}`
 
# on descend tant qu'il y a des fils
if [ ${#liste} -gt 0 ]
then
 
   # recherche des fils
   fils1=`echo $liste | cut -f 1 -d " "`
   PF=`pgrep -P $fils1`
 
   killAll $fils1 $PF
 
   # on kill le premier fils dans la liste et on remonte
   kill -9 $fils1
 
   autreFils=`echo ${*##*$fils1}` 
 
   killAll $1 $autreFils
 
fi
 
}
 
#nom du processus a tuer !!
PROCESS=konsole 
 
# Process pere
NP=`ps -Af | grep $PROCESS | grep -v grep | awk '{print $2}'`
 
# Recherche de ses fils niveau 1
NPF=`pgrep -P $NP`
 
#Supression des fils de tous niveaux
killAll $NP $NPF
 
# on tue le premier pere
#kill -9 $NP