[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Matar processo na marra



Mateus Pedroso wrote:

Também não funcionou

saut:~# ps ax |grep fdisk
 5029 ?        D      0:00 fdisk /dev/sda
 5043 ?        D      0:00 fdisk -l
 5383 pts/5    S+     0:00 grep fdisk
saut:~# killall -9 fdisk
saut:~# ps ax |grep fdisk
 5029 ?        D      0:00 fdisk /dev/sda
 5043 ?        D      0:00 fdisk -l
 5387 pts/5    S+     0:00 grep fdisk
saut:~#

Nada que uma bela olhada na man page nao explique algumas coisas:

-----------
PROCESS STATE CODES
       D uninterruptible sleep (usually IO)
       R runnable (on run queue)
       S sleeping
[...]
       +      is in the foreground process group

-----------

Ou seja, o fdisk solicitou algum IO ao kernel, e está no meio de uma transação, aguardado que ela seja terminada - nenhum IO pode ser interrompido no meio, por isso ele entra no estado 'D' até que se complete. Assim que a transação for completada, ele receberá todos os sinais enviados e pendentes (no caso do linux, eu acho que ele guarda apenas um de cada tipo).

Coisas que envolvem o sistema de arquivos, acesso a disco, etc (IO em geral) são criticos pois são coisas que não podem ser interrompidas. Aconteceria o mesmo se seu HD estive com pau, a diferença é que o HD tem um limite no número de tentativas e ai ele retorna (mais cedo ou mais tarde) um erro e as coisas voltam a se executar.

Uma coisa que até hoje não sei se foi muito interessante (em termos de robustez) foi fazer a transparencia de NIS/NFS - qquer pauzinho que dá na rede, o kernel bloqueia aquele processo até que a rede volte. Acontece exatamente assim, congela de tal maneira q não há kill nesse mundo capaz de matar um processo no estado 'D'. Quem nunca viu isso, faça um teste e tire o cabo de rede de micro que usa NIS/NFS por alguns segundos e veja o resultado.


Agora, um outro comentário aleatório: quem for responder esse e-mail responda só para a lista!!!!

--
Marcos



Reply to: