Re: Processo immortale
On 02/10/2018 09:19, Paolo Nicorelli wrote:
C'è il processo utente con PID 9583 che gira dal 21 Agosto.
kill -9 e sudo kill -9 non danno errori ma il processo rimane li
Non è zombie, è in stato R
pstree dice che il padre è init.
il comando kill -9 lancia una chiamata asincrona per l'uccisione del
processo indicato, se però il processo sta eseguendo una system call,
allora questa può bloccare SIGKILL fino al suo completamento.
Una system call può non terminare o impiegare tempi anche biblici per
diversi motivi, ad esempio:
* si sta cercando di accedere ad una risorsa (solitamente remota) che
non è disponibile (es: un file system NFS) [in questo caso dovrebbe
bastare rendere disponibile la risorsa, es: montare il file system NFS]
* un bug hardware
* un bug di Linux
Però penso che gli ultimi due casi dovrebbero porre il processo nello
stato D.
Visto che il tuo processo è nello stato di running R dovresti capire
cosa sta aspettando per risvegliarlo dallo sleep.
Per individuare cosa sta aspettando si può provare in diversi modi:
* cat /proc/PID/syscall
* lsof -p PID (come ti hanno già suggerito)
* strace -p PID
* gdb PERCORSO_ALL'ESEGUBILE PID
Guardando quanto hai postato per lsof
> php 9583 userXXX 3u sock 0,8 0t0 485569960 can't identify protocol
> php 9583 userXXX 5u sock 0,8 0t0 485583014 can't identify protocol
direi che il problema potrebbe essere causato da questi due.
Potrebbero essere dei socket che non sono stati chiusi correttamente
dovresti vederli in stato CLOSE_WAIT anche eseguendo questo:
# netstat -putan
Però:
1) non so se è possibile terminare dei socket in quello stato... se non
uccidendo il processo che li ha generati :-(
2) se il problema è questo, secondo me, l'unica è correggere il sorgente
dove vengono aperti e farglieli chiudere correttamente... e a questo
punto non so se puoi sostituire l'eseguibile (può essere uno script)
Provare ad ucciderlo con gdb:
gdb -p PID
> kill
Kill the program being debugged? (y or n) y
> quit
Se non funziona neanche così, dopo aver fatto il punto 2 devi riavviare
la macchina... o far si che il processo abbia un altro nome (in modo che
possa partire) e lasciare quello attivo in sleep.
Ciao
Davide
--
Dizionari: http://linguistico.sourceforge.net/wiki
Petizione contro il formato ms-ooxml:
http://www.noooxml.org/petition
Non autorizzo la memorizzazione del mio indirizzo su outlook
Reply to: