Як слідкувати за тим, які файли відкриваються


9

Чи є інструмент для моніторингу, які процеси відкривають, які файли в системі, щоб ви могли відстежити, який процес не торкається певного файлу?

Lsof може дізнатись, чи запустити його, поки процес відкриває файл, але якщо це недовговічний процес, який запускається раз у раз, ви не можете його спіймати з lsof. Вам потрібно щось, що використовує трасування ядра.


Ви перевірили інотифікувати? Дивіться відповідь @ Kees тут, наприклад: askubuntu.com/questions/25442/… Тут є кілька посилань на мою відповідь: askubuntu.com/questions/29566/…
belacqua

@jgbelacua жоден із цих не є тим, що я шукаю. Inotify може повідомити вам про торкання певного файлу, і lsof може повідомити вам, які файли відкрив процес чи який процес має відкритий файл, але мені потрібно з’ясувати, який процес продовжує торкатися файлу, а потім закрити його, перш ніж я зможу запустіть lsof, щоб його зловити.
psusi

Відповіді:


7

Ви можете, можливо, використовувати для цього систему аудиту. Він трохи важкий, але щось подібне має працювати (у /etc/audit/audit.rules):

# delete all other rules
-D

# watch the file in question
-w /path/to/file -p rwxa

і тоді я думаю, що вам потрібно перезапустити аудит:

sudo service audit restart

(Якщо у вас його не встановлено, він знаходиться в пакеті аудиту.) Винуватець може бути знайдений у /var/log/audit/audit.log.


Ідеально! Це саме те, що я шукав.
psusi

0

На жаль, механізм, який Linux використовує для того, щоб дозволити моніторинг файлів, є інотифікованим, що не забезпечує достатньою інформацією для вилучення корисних даних: ви отримуєте лише ім'я файлу та дії, які були виконані.

Я спробував використовувати щось подібне:

sudo inotifywait -mr somedir --format "%w%f" | while read file; do echo -n "$file => ";lsof -b $file; echo ""; done

Це слухає ініціювати події у вказаному каталозі, і для кожної події він запускає lsof, щоб спробувати вловити процес, який торкається файлу. На жаль, для більшості перевірених мною доступів (таких як використання редактора для запису у файл) команда LSOF - це просто сповільнити та не вдається зловити процес, що порушує.

Якщо ваші процеси роблять інтенсивніший IO на проблемних файлах, то ваш пробіг може відрізнятися. Удачі.


0

fnotifystat - це інструмент, призначений для перегляду активності файлів Linux

sudo apt-get install fnotifystat
sudo fnotifystat
Total   Open  Close   Read  Write   PID  Process         Pathname
  7.0    1.0    1.0    5.0    0.0   2075 libvirtd        /proc/cpuinfo
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/physical_package_id
  4.0    1.0    1.0    2.0    0.0   2075 libvirtd        /sys/devices/system/node
  4.0    1.0    1.0    2.0    0.0   2075 libvirtd        /sys/devices/system/node/node0
  4.0    2.0    2.0    0.0    0.0  15313 gnome-calendar  /usr/share/zoneinfo/Europe/London
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/online
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/present
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/node/node0/meminfo
  2.0    0.0    0.0    0.0    2.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-release.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-desktop.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-devel.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-kernel.log

Показуйте топ-10 активних файлів кожні 60 секунд до зупинки:

sudo fnotifystat -t 10 60

Показувати здатність файлу кожні 10 секунд лише 6 разів:

sudo fnotifystat 10 6

Показати активність файлу громовідводу та ідентифікатор процесу 1827:

sudo fnotifystat -p thunderbird,1827

Показуйте всі файли сповіщень про подію та 20 найпопулярніших файлів активних дій протягом одного періоду 5 хвилин:

sudo sudo notifystat -v -d -c 5m 1

Просто показуйте кожен файл сповіщення про подію в / sys та / proc, а не періодичної статистики:

sudo fnotifystat -n -i /sys,/proc

Зверніться до сторінки чоловіка fnotifystat для отримання додаткової інформації, це досить гнучкий інструмент.

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