Эквивалент SysInternals FileMon для Linux?
Я пытаюсь отладить приложение в Ubuntu - мне нужно прослушивать попытки открытия файлов (даже для файлов, которые не существуют).
Process Monitor (ранее известный как FileMon) доступен в Windows - что находится в служебном поясе Ubuntu?
Спасибо!
Ashley
9 ответов
Вы ищете Strace. Посмотрите здесь: https://wiki.ubuntu.com/Strace
Это зависит от того, что вы хотите:
В целом, вы хотите посмотреть inotify, чтобы увидеть все обращения к файлам, которые делает любой процесс.
В небольшой программе strace позволит вам наблюдать системные вызовы, которые делает конкретный процесс. Стрейс довольно круто. Вы можете отследить вызовы процесса для "открытия", выполнив
strace -f -eopen $cmd
, например. Страница man, конечно, содержит полную информацию о синтаксисе.
У SGI есть инструмент, который вы можете попробовать: http://oss.sgi.com/projects/fam/
strace
Перед запуском приложения хорошо смотреть, что делает приложение.lsof
приятно видеть, какие файлы использует уже запущенное приложение.
КСТАТИ:lsof -ni:22
показывает, какой процесс использует порт 22.
Вот пример использования strace для отслеживания изменений файла:
strace -f -e trace=file -p7546 -o /tmp/outputfile
-f
обеспечивает захват событий дочерних процессов.-e trace=file
говорит, что мы должны захватывать системные вызовы (например, stat
, open
, futex
так далее.)-p
это идентификатор процесса (получен из ps -aux
или другие средства)-o
указан выходной файл (может быть много данных, и вместо этого вы можете использовать grep в качестве фильтра.
Это старый, но я думаю, что это хорошая идея, чтобы обновить его на сегодня реальность.
Для отладки всего одного процесса и их потомков, strace все равно будет лучшим способом. Он может легко показать любой доступ к файлу, даже на отсутствующих файлах.
Для общей отладки системы, функция аудита в ядре может сделать это и является рекомендуемым способом. Он не требует каких-либо исправлений для последних ядер, только установленный пакет аудита
Вот простой графический интерфейс для его использования:
Это копирует Windows Filemon, отслеживая доступ к файлам для всех мест, процессов и т. Д.
также проверьте этот пост
Это требует помощи от Мортадело. http://gitorious.org/mortadelo
Вот что хорошо сработало для меня (Linux Mint 19.1):
sudo lsof 2>&1 | grep programnamehere
Не уверен почему 2>&1
был необходим, но он не фильтровал, если я не использовал его.