Як дізнатися, які файли виконуються, коли я відкриваю програму?


12

Я хочу знати, що відбувається за екраном, коли я відкриваю якусь програму. Наприклад, коли я відкриваю firefox, я хочу знати, які файли читаються та які виконуються. Чи можна це зробити? Навіть відкриття Firefox з терміналу не містить жодної інформації. ОС: Ubuntu 12.04

Відповіді:


21

Використовуйте strace!

Приклад: Список усіх файлів, відкритих Firefox під час сеансу:

strace -f firefox 2>&1 | grep 'open('

Результати в чомусь подібному, якщо ви відкриєте другий екземпляр FireFox: http://pastebin.com/iRqxgiWN (Опція '-f' просто змушує простежити слідування процесу вилки.)

Приклад 2: Перерахуйте всі процеси, виконані FireFox:

strace -f firefox 2>&1 | grep -P 'exec[vlpe]*\('

Результати чогось подібного під час відвідування YouTube:

[pid 25020] execve("/usr/lib/firefox/plugin-container", ["/usr/lib/firefox/plugin-containe"..., "/usr/lib/adobe-flashplugin/libfl"..., "-greomni", "/usr/lib/firefox/omni.ja", "-appomni", "/usr/lib/firefox/browser/omni.ja", "-appdir", "/usr/lib/firefox/browser", "15198", "false", "plugin"], [/* 57 vars */]) = 0
[pid 25024] execve("/bin/sh", ["sh", "-c", "ps x | grep netscape"], [/* 57 vars */]) = 0
[pid 25025] execve("/bin/ps", ["ps", "x"], [/* 57 vars */] <unfinished ...>
[pid 25026] execve("/bin/grep", ["grep", "netscape"], [/* 57 vars */]) = 0

Це можна зробити і з багатьма іншими системними дзвінками ...

Порівнюючи параметри open()вашого grepпошуку, ви також можете дізнатися, у якому режимі файл відкрито:

Просто додайте | grep -P 'O_RDONLY|O_RDWR'(головний символ труби важливий!) Для фільтрування доступу | grep -P 'O_WRONLY|O_RDWR'для читання або доступу для запису до вашої команди ...

Редагувати :

Як було сказано в коментарях, ви також можете використовувати strace -fe open firefoxдля переліку всіх файлів, відкритих FireFox. Ви також strace -fe trace=file firefoxможете перелічити всі операції з файлами, виконані FireFox, які мають аргумент до файлу (відкритий, stat, lstat, chmod, доступ, ...).

Є ще багато інших! Ознайомтеся із сторінкою керівництва страйку (1) .


1
Я досить здивований, що Firefox запустить оболонку, щоб зібрати "netscape" зі списку процесів.
— Майкл

1
strace має широкі вбудовані можливості фільтрації. Спробуйте strace -e openпоказувати лише дзвінки open(), наприклад.
— Джон Кугельман

@Michael породжує оболонку, оскільки використовує трубу ("|"), яка є синтаксисом оболонки. Ви можете налаштувати ту саму трубку вручну з коду, але набагато простіше дозволити оболонці робити це, доки ви знаєте, що немає шансів пропустити коди втечі оболонки від користувача, що може призвести до вразливості безпеки.
— Алістер Бакстон

1

насправді існує режим, названий як багатослівний режим, але я не впевнений, що у Firefox є такий варіант. Деякі зазвичай мають таке. Але немає жодної проблеми, кожен додаток складається з свого log.so ви можете перевірити активність програми, перевіривши його дані журналу.

Якщо ви хочете ввімкнути журнал для firefox, ви можете перевірити це

http://bertrandbenoit.blogspot.in/2011/09/activate-logging-for-mozilla.html

кожну діяльність програми в Ubuntu ви можете перевірити за допомогою їх конкретних журналів. всі програми будуть входити в /var/logкаталог.

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