Scopri quali processi stanno scrivendo sul disco rigido


32

Sul mio Lenovo T400 e Ubuntu, la luce per la scrittura su disco fisso continua a lampeggiare. Mi chiedevo se in Linux è possibile scoprire quali processi stanno eseguendo I / O sul disco rigido? Proprio come da top, puoi scoprire quali processi utilizzano la maggior parte della CPU e della memoria.

Risposte:


42

Iotop è un buon strumento per quello che vuoi. Inoltre, consente di visualizzare la quantità accumulata di I / O su qualsiasi DISK READ, DISK WRITE, SWAPIN e IO (percentuale complessiva). Questo è attraverso un'interfaccia elegante:

  • Basta premere asulla tastiera e ordinerà i processi più affamati in cima.
  • Invertire l'ordine, basta premere r.
  • Se vuoi ordinare per altre colonne, premi semplicemente il tasto sinistra / destra.

Ad esempio top, la presentazione è piuttosto impegnativa. Un'altra cosa è che non ha la miriade di opzioni che topha (ad esempio, non posso scegliere di nascondere nessuna delle colonne in cui non mi interessa), ma lo strumento è più che sufficiente per il suo scopo specifico.


3
Powertop è anche utile per trovare cosa sta consumando la batteria su un laptop; iotop è ancora il primo posto in cui cercare gli accessi al disco.
Gilles 'SO- smetti di essere malvagio' il

si può passare -o( --only) per filtrare effettivamente tutte le attività che non eseguono alcun I / O. Questo rende l'elenco meno affollato
Marcin Orlowski, il

15

Puoi usare lsof( man lsof ). Di seguito verrà restituito un elenco di tutti i file aperti per la scrittura:

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

1
Quali file sono aperti e quali file sono effettivamente accessibili sono due cose diverse.
psusi,

@psusi È molto probabile che "si acceda a un file aperto per la scrittura". Inoltre, è possibile recuperare ulteriori informazioni imparando lsof tramite la sua pagina man.
James Sumners,

5
I file aperti per la scrittura possono essere scritti ad un certo punto, ma non necessariamente in questo momento. Molti file vengono mantenuti aperti ma raramente vengono scritti. D'altra parte, i file in fase di scrittura potrebbero essere aperti e chiusi rapidamente e quindi non verranno visualizzati in lsof. Ad ogni modo, è di scarsa utilità capire quale processo sta attualmente scrivendo sul disco al momento.
psusi,

Il wdal comando sopra ti rende grep per i file che sono aperti solo per la scrittura . I file aperti per la scrittura e la lettura ( u) non verranno visualizzati, ma possono anche essere scritti su. Se desideri vedere i file aperti per la scrittura e per la lettura + scrittura, credo che questo sia quello che stai cercando:lsof | grep -e "[[:digit:]]\+[wu]\{1\}"
Martijn

1
@Martijn Dovrai utilizzare grep -e**w**per evitare la corrispondenza [0-9]\+[wu]all'interno di altre colonne


2

Soprattutto per attività su disco insufficiente, è necessario utilizzare iotop in modalità batch, per evitare che le linee di accesso brevi scompaiano rapidamente. La risposta di Come posso registrare / leggere il file system per nome file in Linux? mostra come farlo.

Finora iotopè la migliore soluzione globale. Il seguente comando fornisce un output in tempo reale di tutti i processi che utilizzano il 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

Una volta che hai l'ID processo, puoi anche trovare i file con

 lsof -p $PID

1
In che modo questa risposta differisce dalle risposte precedenti (molto vecchie)? È utile rispondere a una vecchia domanda per spiegare in che modo la tua risposta differisce dalle risposte precedenti. Questo aiuta il lettore a ordinare tra le risposte.
Stephen Rauch,

Grazie per averlo segnalato. Ho modificato questa risposta tenendo conto del tuo commento.
Frank Breitling,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.