Я хотел бы видеть, что происходит в папках моего сервера приложений, то есть какие файлы были изменены процессом x или какие *.war
файлы были изменены (заменены / созданы) за последние x минут.
Есть ли инструмент в Linux, чтобы помочь с этим?
Я хотел бы видеть, что происходит в папках моего сервера приложений, то есть какие файлы были изменены процессом x или какие *.war
файлы были изменены (заменены / созданы) за последние x минут.
Есть ли инструмент в Linux, чтобы помочь с этим?
Ответы:
Strace (как описано выше) является одним из способов проверки действий указанного работающего программного обеспечения.
Некоторая команда like watch find dir/ -mmin 1
может также помочь проверить изменения за последнюю минуту в каком-либо каталоге.
В зависимости от того, что именно вы ищете, inotify-tools , вероятно, еще один инструмент торговли здесь.
Например, inotifywait -mr dir/
отслеживает изменения в указанном каталоге и мгновенно выдает отзыв о любом приложении, пытающемся открыть / прочитать / записать / закрыть файл. Однако inotify не дает вам обратной связи о том, какое приложение или процесс обращается к файлу - это то, что делает strace.
Пожалуйста, знайте, что мониторинг на системном уровне обычно имеет ограниченное применение для программного обеспечения Java, работающего в некоторой среде контейнера приложений, поскольку вы видите только контейнер (например, Tomcat), но не реальное приложение (например, .war), взаимодействующее с системой.
Вы можете получить информацию о том, какие файлы были доступны процессу с помощью lsof :
lsof -n -p `pidof your_app`
И наоборот, вы можете получить pid процесса, который пишет / читает в некоторый файл:
lsof -n -t file
Вы можете использовать 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