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

19

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

Есть ли инструмент в Linux, чтобы помочь с этим?

Мартин В.
источник
Здравствуйте, попробуйте взглянуть на это руководство, чтобы настроить audit для мониторинга каталогов и файлов. Xmodulo.com/how-to-monitor-file-access-on-linux.html
Sifungurux,
1
Я попал на этот вопрос с помощью поиска Google, но нашел ответ здесь: unix.stackexchange.com/questions/18844/…
Квентин Скоусен,
Посмотрите на SystemTap. uselessuseofcat.com/?p=281
Стив

Ответы:

9

В зависимости от ваших конкретных потребностей, вы можете захотеть изучить решения inotify и / или FAM / GAMIN .

peterph
источник
14

Strace (как описано выше) является одним из способов проверки действий указанного работающего программного обеспечения.

Некоторая команда like watch find dir/ -mmin 1может также помочь проверить изменения за последнюю минуту в каком-либо каталоге.

В зависимости от того, что именно вы ищете, inotify-tools , вероятно, еще один инструмент торговли здесь.

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

Пожалуйста, знайте, что мониторинг на системном уровне обычно имеет ограниченное применение для программного обеспечения Java, работающего в некоторой среде контейнера приложений, поскольку вы видите только контейнер (например, Tomcat), но не реальное приложение (например, .war), взаимодействующее с системой.

knoepfchendruecker
источник
8

Вы можете получить информацию о том, какие файлы были доступны процессу с помощью lsof :

 lsof -n -p `pidof your_app`

И наоборот, вы можете получить pid процесса, который пишет / читает в некоторый файл:

 lsof -n -t file
trankvilezator
источник
6

Вы можете использовать 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
umläute
источник
было бы замечательно контролировать также по папке, а не по PID, спасибо. Кстати, у меня в Ubuntu работает PID -p PID.
Мартин В.
0

watch find dir/ -mmin 1 у меня не сработало, что было просто скопировать и изменить:

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

Он довольно ресурсоемкий, но показывает все изменения между моментальным снимком и diffвременем.

Serv-вкл
источник