Как узнать, какие файлы выполняются при открытии приложения?


12

Я хочу знать, что происходит за экраном, когда я открываю какое-то приложение. Например, когда я открываю firefox, я хочу знать, какие файлы читаются, а какие исполняются. Есть какой-либо способ сделать это. Даже открытие Firefox из терминала не показывает никакой информации. ОС: Ubuntu 12.04

Ответы:


21

Используйте strace!

Пример: список всех файлов, открытых Firefox во время сеанса:

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

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

Пример 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, которые имеют путь к файлу в качестве аргумента (open, stat, lstat, chmod, access, ...).

Многие другие доступны! Проверьте страницу руководства strace (1) .


1
Я довольно удивлен, что Firefox запускает оболочку, чтобы вывести «netscape» из списка процессов.
— Майкл

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

@Michael, он порождает оболочку, потому что он использует канал ("|"), который является синтаксисом оболочки. Вы можете настроить тот же канал вручную из кода, но оболочке гораздо проще сделать это - при условии, что вы не знаете, что от пользователя могут быть переданы escape-коды оболочки, что может привести к уязвимостям безопасности.
— Алистер Бакстон

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.