моніторинг зміни файлів + процес доступу до файлів

Я хотів би побачити, що відбувається в папках сервера додатків, тобто які файли змінюються за допомогою процесу x або які * .war файли були змінені (замінені/створені) за останні х хвилин.

Чи є у Linux інструмент для цього?

14
Погляньте на SystemTap. uselessuseofcat.com/?p=281
додано Автор Stanley.Goldman, джерело
Привіт, спробуйте звернути увагу на цей посібник, щоб налаштувати аудит для моніторингу каталогів і файлів. noreferrer "> xmodulo.com/how-to-monitor-file-access-on-linux.html
додано Автор user104224, джерело
Я отримав це питання через пошук Google, але тут я знайшов свою відповідь: unix.stackexchange.com/questions/18844/…
додано Автор Ari, джерело

5 Відповіді

Strace (як описано вище) є одним із способів перевірити дії вказаного запущеного програмного забезпечення.

Деякі команди, такі як watch find dir/-mmin 1 , також можуть допомогти перевірити зміни минулої хвилини в деяких каталогах.

Залежно від того, що саме ви шукаєте, inotify-tools це, мабуть, ще один інструмент торгівлі.

Наприклад, inotifywait -mr dir/ відстежує зміни в даній директорії і миттєво надає вам відгуки про будь-яку програму, яка намагається відкрити/прочитати/записати/закрити файл. Однак inotify не дає вам відгуку про те, до якої програми або процесу звертається файл - це те, що робить strace.

Будь ласка, знайте, що моніторинг на рівні системи зазвичай має обмежене використання для програмного забезпечення java, запущеного в певному середовищі з контейнерами додатків, оскільки ви бачите тільки контейнер (наприклад, Tomcat), але не фактичну програму (наприклад .war)), що взаємодіє з системою.

12
додано

Залежно від ваших конкретних потреб, ви можете розглянути inotify та/або FAM / рішення GAMIN .

8
додано

Ви можете отримати інформацію про те, які файли доступні в процесі, lsof :

 lsof -n -p `pidof your_app`

І віце-вірш, ви можете отримати pid процесу, який пише/читає в якийсь файл:

 lsof -n -t file
7
додано

Ви можете використовувати strace для контролю всіх системних викликів процесу, який включає в себе весь доступ до файлів.

Під час запуску програми:

$ strace ./myserver

Ви також можете приєднати strace до запущеного процесу через його PID:

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859
5
додано
було б чудово контролювати і папку не PID, спасибі. btw strace -p PID працює для мене в Ubuntu.
додано Автор Kezzer, джерело

watch find dir/ -mmin 1 did not work for me, what did was simply copy and diff:

cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir

Це досить ресурсомісткий, але він показує всі зміни між знімком і часом diff .

0
додано