risposta-alla-domanda-sullo-sviluppo-web-bd.com

Processo bloccato permanentemente sullo stato D.

Ho un problema con alcuni processi bloccati in uno stato D su Ubuntu 10.04.3 LTS.

Sono in questo stato dal 5 novembre (oggi è il 6 dicembre). Comprendo che si tratta di stati di sonno ininterrotti spesso legati all'attesa di dati dall'hardware come un disco rigido. Questo è un server di produzione, quindi il riavvio è l'ultima risorsa, qualcuno è in grado di far luce su quali potrebbero essere questi processi?

Questo è l'output per gli elementi dello stato D da ps -aux

www-data 22851  0.0  0.0      0     0 ?        D    Nov05   0:00 [2637.64]
www-data 26306  0.0  0.0   4008    12 ?        D    Nov05   0:00 ./2.6.37
www-data 26373  0.0  0.0   4008    12 ?        D    Nov05   0:00 ./n2
www-data 26378  0.0  0.0   4008    12 ?        D    Nov05   0:00 ./n2

Questo è l'output di ps axl | awk '$10 ~ /D/' per qualche informazione in più.

0    33 22851     1  20   0      0     0 econet D    ?          0:00 [2637.64]
1    33 26306     1  20   0   4008    12 ec_dev D    ?          0:00 ./2.6.37
1    33 26373     1  20   0   4008    12 ec_dev D    ?          0:00 ./n2
1    33 26378     1  20   0   4008    12 ec_dev D    ?          0:00 ./n2

C'è un modo per ucciderli? Avere processi in questo stato al riavvio causa problemi?

31
Dr Craig

Questo è lo stato temuto non interrompibile (TASK_UNINTERRUPTIBLE) di un processo. Questo è lo stato in cui il processo non reagisce ai segnali fino a quando non viene eseguito ciò che ha iniziato ad aspettare. Purtroppo è un male necessario. Vedi qui e qui Che cos'è un processo ininterrotto? .

La mia risposta è riavviare il sistema.
Il riavvio causa problemi?
Difficile da dire, potrebbe non esserlo. Il processo che si trova nello stato D potrebbe dover eseguire alcuni aggiornamenti cruciali che non riavvierà al riavvio.
Se davvero non puoi permetterti di riavviare, prova a trovare il disco su cui il processo è in attesa e vedi se il disco funziona correttamente aprendo, chiudendo, leggendo/scrivendo in esso

21
Deepthought

No, non puoi ucciderli, punto. kill -9 non funziona neanche. E non è un bug del kernel, è progettato. Tutti i segnali vengono bloccati fino a quando quei processi lasciano lo stato D. Lasciano lo stato D o il sistema viene riavviato. No, il riavvio non ha alcun problema con questi ragazzi.

I soliti colpevoli di questo tipo di problema sono i dispositivi rimovibili come un cdrom. Il dispositivo potrebbe essere difettoso o qualcuno ha trovato il modo di fare qualcosa di stupido.

5
jim mcnamara