Дізнайтеся, які процеси записуються на жорсткий диск


31

На моїх Lenovo T400 та Ubuntu світло для запису на жорсткий диск постійно блимає. Мені було цікаво, чи можна в Linux дізнатись, які процеси роблять введення-виведення на жорсткий диск? Так само, як і від top, ви можете дізнатися, які процеси використовують більшість процесора та пам'яті.

Відповіді:


41

Iotop - хороший інструмент для того, що ви хочете. Це також дозволяє відображати накопичену кількість вводу-виводу на будь-якому з прочитаних дисків, запису дисків, SWAPIN та IO (загальний відсоток). Це через витончений інтерфейс:

  • Ви просто натискаєте aна клавіатуру, і вона буде сортувати найголовніші процеси зверху.
  • Відміняючи замовлення, ви просто натискаєте r.
  • Якщо ви хочете сортувати за іншими колонками, просто натисніть ліву / праву клавішу.

Мовляв top, презентація досить насичена. Інша справа, що він не має безлічі варіантів, які topє (наприклад, я не можу вибрати приховати жодної колонки, яка мене не цікавить), але інструмент є більш ніж хорошим для своєї конкретної мети.


3
Powertop також корисний для пошуку того, що використовує акумулятор на ноутбуці; iotop - це все-таки перше місце для пошуку доступу на диск.
— Жиль "ТАК - перестань бути злим"

можна передати -o( --only), щоб фактично відфільтрувати всі завдання, не виконуючи жодного вводу-виводу. Це робить список менш переповненим
— Marcin Orlowski

15

Можна використовувати lsof( man lsof ). Далі повернеться список усіх відкритих для запису файлів:

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

1
Які файли відкриті, а до яких файлів насправді доступ - це дві різні речі.
— psusi

@psusi Відкритий файл для запису дуже "доступний". Крім того, більше інформації можна отримати, дізнавшись lsof через її сторінку.
— Джеймс Самнерс

5
Файли, відкриті для запису, можуть бути записані в якийсь момент, але не обов'язково зараз. Багато файлів зберігаються відкритими, але в них рідко записуються. З іншого боку, файли, в які записуються, можуть швидко відкриватися та закриватися, тому вони не відображатимуться у lsof. Так чи інакше, розібратися, який процес насправді записується на диск, наразі мало.
— psusi

Команда " wЗ", наведена вище, робить вас grep для файлів, відкритих лише для запису . Файли, відкриті для запису та читання ( u), не відображатимуться, але їх також можна записувати. Якщо ви хочете бачити файли, відкриті для запису та для читання + запису, я вважаю, що це те, що ви шукаєте:lsof | grep -e "[[:digit:]]\+[wu]\{1\}"
— Martijn

1
@Martijn Ви хочете використовувати, grep -e**w**щоб уникнути відповідності [0-9]\+[wu]іншим стовпцям


2

Особливо для низької активності диска необхідно використовувати 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

1
Чим ця відповідь відрізняється від наведених (дуже старих) відповідей? Добре під час відповіді на старе запитання пояснити, чим ваша відповідь відрізняється від попередніх відповідей. Це допомагає читачеві сортувати серед відповідей.
— Стівен Рауч

Дякуємо, що вказали на це. Я відредагував цю відповідь, враховуючи ваш коментар.
— Френк Брейтлінг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.