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