Il famoso morto
Gabriele Villi
gvilli a iol.it
Mar 12 Nov 2002 14:33:24 UTC
Vernia Damiano wrote:
> Ciao, qualche tempo fa ho mandato una mail circa un processo
> "<defunct>". Ora ho scoperto che il suo PID e' il piu' basso escluso
> quello del window manager (BlackBox). Subito dopo il login io faccio
> partire un xterm. Bene, questo xerm ha un PID piu' alto, quindi non posso
> dedurre altro che il processo "<defunct>" sia figlio di qualcosa prima di
> un programma da me "esplicitamente" avviato. Che posso fare?
Dunque, secondo me il processo non viene ereditato da init perche' il
padre e' ancora vivo.
In pratica succede questo
1) parte il padre P
2) che lancia il figlio F
3) il figlio F muore
4) ma il padre e' vivo e non gli fa il funerale (i.e. non legge il
valore di ritorno)
a questo punto F e' defunct e non puoi ammazzarlo con kill perche' e'
gia' morto. Non viene ereditato da init perche' P non e' morto e quindi
F non e' orfano.
Per simulare la cosa,
1) apri X e lancia un terminale
2) digita sh (cioe' lancia una shell "innestata")
3) dalla nuova shell lancia xterm & (OCIO che devi mandarlo in background)
4) digita suspend nella shell del punto 2 (questo sospende la shell
lanciata al punto 2 e ritorna alla shell piu' esterna, quella del punto
1 per intenderci)
5) chiudi xterm
a questo punto xterm e' defunct e non riesci ad ammazzarlo. Hai 2
soluzioni anzi 3:
a) far riprendere l'esecuzione alla shell al punto 2
b) ammazzare la shell del punto 2
c) fregartene altamente dei morti
Venendo al tuo caso, devi capire chi e' il padre di 'true' defunct e poi
decidere quale strategia delle precedenti tre adottare
Per capire chi e' il padre del processo incriminato
ps auxf
ciao
gv
Maggiori informazioni sulla lista
Lug
|