Еквівалент SysInternals FileMon для Linux?


13

Я намагаюся налагодити додаток на Ubuntu - мені потрібно слухати відкриті спроби (навіть для файлів, які не існують).

Монітор процесів (раніше відомий як FileMon ) доступний у Windows - що знаходиться на поясі утиліти Ubuntu?

Дякую!

Ешлі

Відповіді:


7

Ти шукаєш напруги. Подивіться тут: https://wiki.ubuntu.com/Strace


2
Наскільки я розумію, запущений filemon дозволяє користувачеві бачити всі файли. напруга з іншого боку, вимагає вказати, який додаток потрібно відкрити першим. Для цього потрібно заздалегідь знати, додаток, який отримує доступ до цих файлів. Що робити, якщо ви не знаєте, яка програма отримує доступ до тих файлів, які вам цікаві?
chuacw

8

Це залежить від того, що ви хочете:

  • Загалом, ви хочете подивитися на ініціативу, щоб побачити всі файли, до яких є будь-який процес.

  • У малому, напруга дозволить вам спостерігати за систематичними дзвінками, які робить певний процес. Страйс досить приголомшливий. Ви можете простежити виклики процесу на "відкрити" strace -f -eopen $cmd, наприклад, зробивши , наприклад. На головній сторінці , звичайно, є повна інформація про синтаксис.


Дякую pjz. Якщо бути дуже конкретним - у мене виникли проблеми з початком роботи з Ogre3d на Ubuntu. Моя тестова програма, здається, шукає деякі .cfg файли під час запуску. Я хочу прослухати всі спроби відкрити файли, щоб я міг переконатися, що правильні файли доступні та мають правильні дозволи.
chickinabiscuit

strace -e відкрито ./app
Джастін

2

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

BTW:
lsof -ni:22 показує, який процес використовує порт 22.



1

Ось приклад використання strace для відстеження змін файлів:

strace -f -e trace=file -p7546 -o /tmp/outputfile

-fзабезпечує захоплення подій від дочірніх процесів.
-e trace=fileкаже , що ми повинні захопити системні виклики пов'язаних з файлом (наприклад stat, open, і futexт.д.)
-pє ідентифікатор процесу (витягується з ps -auxабо інших засобів) -oвказав OutputFile (там може бути багато даних , і ви могли б замість того, щоб використовувати Grep в якості фільтра.




0

Це старе, але я вважаю, що це гарна ідея оновити його на сьогоднішній день.

Для налагодження лише одного процесу та їхніх дітей, як і раніше, найкращим способом є напруга. Він може легко відображати всі файлові файли, навіть якщо вони відсутні.

Для загальної налагодження системи, функція аудиту в ядрі може це зробити і є рекомендованим способом. Він не потребує жодного виправлення на останніх ядрах, лише встановлений аудит

ось простий gui для його використання:

аудит-гуї

Це копіює файлові файли Windows, контролюючи доступ файлу для всіх місць, процесу тощо

також перевірити цю публікацію


0

Це те, що добре спрацювало для мене (Linux Mint 19.1):

sudo lsof 2>&1 | grep programnamehere

Не впевнений, навіщо це 2>&1було потрібно, але він не фільтрував, якщо я не використовував його.

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