it-swarm-ru.tech

Узнайте, какие процессы записывают на жесткий диск

На моем Lenovo T400 и Ubuntu индикатор записи на жесткий диск продолжает мигать. Мне было интересно, если в Linux можно узнать, какие процессы делают ввод-вывод на жесткий диск? Как и с помощью top, вы можете узнать, какие процессы используют больше всего ресурсов процессора и памяти.

33
Tim

Iotop хороший инструмент для того, что вы хотите. Это также позволяет отображать накопленное количество операций ввода-вывода на любом из дисков DISK READ, DISK WRITE, SWAPIN и IO (общий процент). Это через удобный интерфейс:

  • Вы просто нажимаете a на клавиатуре, и он отсортирует самые голодные процессы сверху.
  • В обратном порядке вы просто нажимаете r,.
  • Если вы хотите отсортировать по другим столбцам, просто нажмите левую/правую клавишу.

Как top, презентация довольно занят. Другое дело, что у него нет множества опций, которые есть у top (например, я не могу скрыть ни одного из колонки мне неинтересны), но инструмент более чем достаточно хорош для его конкретной цели.

42
tshepang

Вы можете использовать lsof ( man lsof ). Далее будет возвращен список всех файлов, открытых для записи:

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

Используйте strace.

2
user541686

Специально для низкой активности диска необходимо использовать iotop в пакетном режиме, чтобы предотвратить быстрое исчезновение коротких линий доступа. Ответ Как мне записать чтение/запись файловой системы по имени файла в Linux? показывает, как это сделать.

Пока что iotop - лучшее общее решение. Следующая команда дает в реальном времени вывод всех процессов, использующих диск.

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

Если у вас есть идентификатор процесса, вы также можете найти файлы с

 lsof -p $PID
2
Frank Breitling