Defunct...Zombie
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
di nientegallows ha scritto:ps. grazie dei link firetux
il problema non sono i figli ma proprio il padre, percui la procedura è:gioco ha scritto:potresti risovere killando il padre oppure un figlio. dipende da quello che ha problemi di comunicazione.
con il comando ps cerchi il pid del programma defunto, poi con il comando pstree ricerchi il padre del programma defunto e uccidi quello con kill
- TheSnowBoarder
- Linux 1.x

- Messaggi: 139
- Iscritto il: gio 30 giu 2005, 0:00
- Località: Catania
Se un sistema comincia a generare processi zombie (defunct)
vuol dire che qualche programma sta funzionando male,
o che forse è stato scritto proprio male.
Un processo zombie non può essere terminato,
tramite SIGKILL, perché è gia morto !
Quando un processo termina tramite exit() o ritorna
dal main, il kernel si incarica di mandare al padre il segnale
SIGCHLD . Deve essere compito del padre recepire SIGCHLD
tramite sigaction() e richiamare di conseguenza waitpid()
in modo da azzerare le risorse del processo morto nella process table
del kernel.
Semplicemente, se un processo padre ignora la ricezione
di SIGCHLD, allora si formano zombie.
I processi zombie vengono adottati da /bin/init soltanto
quando ne sono morti i genitori; in tal caso init si occuperà
di richiamare waitpid per loro.
Non penso che sia una cosa buona "terminare" un processo
zombie uccidendone il padre.
Vi sono processi che durante la propria esecuzione eseguono
un buon numero di fork() ; e se il padre che voi pensate di killare
fosse proprio quell'OpenOffice su cui state scrivendo il documento
più importante della vostra vita ?
Meglio non rischiare !
vuol dire che qualche programma sta funzionando male,
o che forse è stato scritto proprio male.
Un processo zombie non può essere terminato,
tramite SIGKILL, perché è gia morto !
Quando un processo termina tramite exit() o ritorna
dal main, il kernel si incarica di mandare al padre il segnale
SIGCHLD . Deve essere compito del padre recepire SIGCHLD
tramite sigaction() e richiamare di conseguenza waitpid()
in modo da azzerare le risorse del processo morto nella process table
del kernel.
Semplicemente, se un processo padre ignora la ricezione
di SIGCHLD, allora si formano zombie.
I processi zombie vengono adottati da /bin/init soltanto
quando ne sono morti i genitori; in tal caso init si occuperà
di richiamare waitpid per loro.
Non penso che sia una cosa buona "terminare" un processo
zombie uccidendone il padre.
Vi sono processi che durante la propria esecuzione eseguono
un buon numero di fork() ; e se il padre che voi pensate di killare
fosse proprio quell'OpenOffice su cui state scrivendo il documento
più importante della vostra vita ?
Meglio non rischiare !

