Skąd mam wiedzieć, jakie pliki są wykonywane po otwarciu aplikacji?


12

Chcę wiedzieć, co dzieje się za ekranem, gdy otwieram jakąś aplikację. Na przykład, kiedy otwieram Firefoksa, chcę wiedzieć, które pliki są odczytywane, a które wykonywane. Czy jest na to sposób? Nawet otwarcie firefoxa z terminala nie pokazuje żadnych informacji. System operacyjny: Ubuntu 12.04

Odpowiedzi:


21

Użyj strace!

Przykład: Wyświetl listę wszystkich plików otwartych przez Firefox podczas sesji:

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

Powoduje coś takiego, jeśli otworzysz drugą instancję FireFox: http://pastebin.com/iRqxgiWN (opcja „-f” powoduje po prostu rozwidlenia procesu śledzenia.)

Przykład 2: Wyświetl listę wszystkich procesów wykonanych przez FireFox:

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

Rezultaty czegoś takiego podczas odwiedzania 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

Możesz to zrobić również z wieloma innymi wywołaniami systemowymi ...

Przez dopasowanie parametrów open()w grepwyszukiwaniu można również dowiedzieć się, w jakim trybie plik został otwarty:

Wystarczy dodać | grep -P 'O_RDONLY|O_RDWR'(wiodący znak potoku jest ważny!), Aby odfiltrować dostęp do odczytu lub | grep -P 'O_WRONLY|O_RDWR'do zapisu do polecenia ...

EDYCJA :

Jak wspomniano w komentarzach, możesz także użyć strace -fe open firefoxdo wyświetlenia listy wszystkich plików otwartych przez FireFox. Możesz także użyć strace -fe trace=file firefoxdo wyświetlenia listy wszystkich operacji na plikach wykonanych przez FireFox, które mają ścieżkę do pliku jako argument (open, stat, lstat, chmod, access, ...).

Dostępnych jest wiele innych! Sprawdź stronę podręcznika strace (1) .


1
Jestem raczej zaskoczony, że firefox uruchomiłby powłokę, aby grep "netscape" z listy procesów.
Michael

1
strace ma szerokie wbudowane możliwości filtrowania. Spróbuj strace -e openna przykład pokazywać tylko połączenia z open().
John Kugelman,

@Michael spawnuje powłokę, ponieważ używa potoku („|”), który jest składnią powłoki. Możesz skonfigurować ten sam potok ręcznie z kodu, ale znacznie łatwiej jest pozwolić powłoce na wykonanie tej operacji - o ile wiesz, że nie ma szans na przesłanie przez użytkownika kodów ucieczki powłoki, co może prowadzić do luk w zabezpieczeniach.
Alistair Buxton,

1

tak naprawdę jest tryb nazwany trybem pełnym, ale nie jestem pewien, czy firefox ma taką opcję. niektórzy zwykle ją mają. Ale nie ma problemu, każda aplikacja będzie się składała z dziennika. Dzięki temu możesz sprawdzić aktywność aplikacji, sprawdzając dane dziennika.

Jeśli chcesz włączyć dziennik dla firefox, możesz to sprawdzić

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

każdą aktywność aplikacji w Ubuntu można sprawdzić za pomocą ich konkretnych dzienników. wszystkie aplikacje będą logować się w /var/logkatalogu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.