How do I find out what processes are accessing the hard disk in a GNU/Linux-based system?
I'm looking for the equivalent to top for disk access, so I can tell which process(es) are currently reading and/or writing to disk. I'm currently using Ubuntu, but I imagine there's a standard tool that's available as part of the GNU toolset.
You got three-fifths of the answer right yourself - the one you want is called iotop. Search for it in the extra repositories, it should be there.
htop
» F2 » Columns » Active Columns » IO_RATE
Then sort by this column. Also you can add IO_READ_RATE
and IO_WRITE_RATE
columns and sort according to them.
iotop
is the counterpart to top
that watches I/O usage information. If you want detailed information on the files opened by a process, or the list of files opened in a directory, or watch over files in the whole system, use lsof
.lsof
is quite versatile and provides information about open tcp, udp, NFS connections too.
I use atop.
Atop is an ASCII full-screen performance monitor that is capable of reporting the activity of all processes (even if processes have finished during the interval), daily logging of system and process activity for long-term analysis, highlighting overloaded system resources by using colors, etc. At regular intervals, it shows system-level activity related to the CPU, memory, swap, disks and network layers, and for every active process it shows the CPU utilization, memory growth, disk utilization, priority, username, state, and exit code.