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


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.