Descubra quais processos estão gravando no disco rígido


31

No meu Lenovo T400 e Ubuntu, a luz para gravação no disco rígido continua piscando. Eu queria saber se no Linux é possível descobrir quais processos estão fazendo E / S no disco rígido? Assim como top, você pode descobrir quais processos estão usando mais CPU e memória.

Respostas:


41

Iotop é uma boa ferramenta para o que você deseja. Também permite exibir a quantidade acumulada de E / S em qualquer um dos discos de leitura, gravação de disco, troca e E / S (porcentagem geral). Isto é através de uma interface bacana:

  • Você apenas pressiona ao teclado e ele classifica os processos mais famintos no topo.
  • Invertendo a ordem, basta pressionar r.
  • Se você deseja classificar por outras colunas, basta pressionar a tecla esquerda / direita.

Como top, a apresentação é bastante ocupada. Outra coisa é que ele não tem as inúmeras opções que existem top(por exemplo, não posso escolher ocultar nenhuma das colunas nas quais estou desinteressado), mas a ferramenta é mais que suficiente para seu objetivo específico.


3
Powertop também é útil para descobrir o que está consumindo a bateria em um laptop; O iotop ainda é o primeiro lugar para procurar acessos ao disco.
Gilles 'SO- stop be evil'

pode-se passar -o( --only) para filtrar todas as tarefas que não fazem nenhuma E / S. Isso torna a lista menos cheia
Marcin Orlowski 18/07

15

Você pode usar lsof( man lsof ). A seguir, retornará uma lista de todos os arquivos abertos para gravação:

lsof | grep -e "[[:digit:]]\+w"

11
Quais arquivos estão abertos e quais arquivos estão realmente sendo acessados ​​são duas coisas diferentes.
Psusi

@psusi É muito provável que um arquivo aberto para gravação seja "acessado". Além disso, mais informações podem ser recuperadas aprendendo lsof através de sua página de manual.
James Sumners

5
Os arquivos abertos para gravação podem ser gravados em algum momento, mas não necessariamente no momento. Muitos arquivos são mantidos abertos, mas raramente são gravados. Por outro lado, os arquivos que estão sendo gravados podem ser abertos e fechados rapidamente e, portanto, não aparecerão em lsof. De qualquer forma, é de pouca ajuda descobrir qual processo está realmente gravando no disco no momento.
Psusi

A wpartir do comando acima, você faz grep para arquivos abertos apenas para gravação . Os arquivos abertos para gravação e leitura ( u) não serão exibidos, mas também podem ser gravados. Se você gostaria de ver arquivos de abrir para escrita e para + leitura e escrita, acredito que isso é o que você está procurando:lsof | grep -e "[[:digit:]]\+[wu]\{1\}"
Martijn

11
@Martijn Você vai querer usar grep -e**w**a correspondência evitar [0-9]\+[wu]dentro de outro colunas


2

Especialmente para baixa atividade de disco, é necessário usar o iotop no modo em lote, para evitar que linhas de acesso curtas desapareçam rapidamente. A resposta de Como faço para registrar / ler o sistema de arquivos por nome de arquivo no Linux? mostra como fazer isso.

Até agora iotopé a melhor solução geral. O comando a seguir fornece uma saída em tempo real de todos os processos usando o disco.

iotop -bktoqqq -d .5

where: -b     is batch mode
       -k     is kilobytes/s
       -t     adds timestamp
       -o     only show processes or threads actually doing I/O
       -qqq   removes output headers
       -d .5  updates every .5 seconds

Depois de ter o ID do processo, você também pode encontrar os arquivos com

 lsof -p $PID

11
Como esta resposta difere das respostas acima (muito antigas)? É bom responder uma pergunta antiga para explicar como sua resposta difere das respostas anteriores. Isso ajuda o leitor a classificar entre as respostas.
Stephen Rauch

Obrigado por apontar isso. Editei esta resposta levando em consideração o seu comentário.
Frank Breitling
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.