GNU/Linux >> Linux Esercitazione >  >> Linux

Come fermare il processo "ininterrotto" su Linux?

Risposta semplice:non puoi.

Risposta più lunga:il sonno ininterrotto significa che il processo non verrà svegliato dai segnali. Può essere svegliato solo da ciò che sta aspettando. Quando ottengo situazioni del genere, ad es. con il CD-ROM, di solito resetto il computer utilizzando la sospensione su disco e la ripresa.


Uccidere un processo ininterrotto riesce, semplicemente non lo fa immediatamente. Il processo non scomparirà finché non riceverà effettivamente il segnale. Quindi l'invio di un segnale da solo non è sufficiente per sbarazzarsi del processo, devi anche svegliarlo dal sonno ininterrotto.

Tanel Poder ha scritto un'ottima guida per analizzare i processi dello stato D. È molto tipico che questo stato sia causato da I/O incompleti, ad es. errore di rete. slm ha pubblicato alcuni suggerimenti molto utili sul superutente su come sbloccare l'I/O di rete e anche sul problema stesso.

Personalmente, quando ho a che fare con Windows su VirtualBox, e anche con wine, mi imbatto spesso in questo problema a causa di un I/O del cdrom che non si completa mai (immagino sia una sorta di controllo della presenza del disco). I dispositivi ATA possono essere ripristinati, il che probabilmente sbloccherà il processo. Ad esempio, sto usando il seguente piccolo script per reimpostare entrambe le mie unità ottiche, sbloccando i processi che stanno bloccando:

echo 1 > /sys/block/sr0/delete
echo 1 > /sys/block/sr1/delete
echo "- - -" > /sys/class/scsi_host/host7/scan

Lo stato D significa sostanzialmente che il processo è in attesa di I/O del disco o di altri I/O a blocchi che non possono essere interrotti. A volte questo significa che il kernel o il dispositivo sta tentando febbrilmente di leggere un blocco danneggiato (specialmente da un disco ottico). A volte significa che c'è qualcos'altro.

Il processo non può essere terminato finché non esce dallo stato D. Scopri cosa sta aspettando e risolvilo. Il modo più semplice è riavviare. A volte la rimozione del disco in questione aiuta, ma può essere piuttosto pericolosa:guasto irreparabile dell'hardware irreversibile se non sai cosa stai facendo (leggi:fumo che esce).


Linux
  1. Come limitare l'I/o di processo a un limite massimo?

  2. Come uccidere un processo su Linux usando il comando?

  3. Come si esegue l'I/O della console non bloccante su Linux in C?

  4. Come mettere in pausa/riprendere un processo in Linux

  5. Come posso monitorare l'utilizzo dell'I/O di rete per processo in Linux?

Come uccidere un processo o fermare un programma in Linux

Come elencare i processi in esecuzione in Linux

Come uccidere un processo in Linux

Come uccidere i processi Zombie in Linux

Come KILL un processo su Linux

Come eliminare le cache di I/O su disco su Linux?