Come faccio a sapere quali file vengono eseguiti quando apro un'applicazione?


12

Voglio sapere cosa succede dietro lo schermo quando apro un'applicazione. Ad esempio, quando apro firefox, voglio sapere quali file vengono letti e quali vengono eseguiti. C'è un modo per fare questo. Anche l'apertura di Firefox dal terminale non mostra alcuna informazione. Sistema operativo: Ubuntu 12.04

Risposte:


21

Usa strace!

Esempio: elenca tutti i file aperti da Firefox durante una sessione:

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

Il risultato è qualcosa di simile se apri una seconda istanza di FireFox: http://pastebin.com/iRqxgiWN (L'opzione '-f' fa semplicemente seguire le forcelle di processo alla traccia).

Esempio 2: Elenca tutti i processi eseguiti da FireFox:

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

Risultati in qualcosa del genere quando si visita 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

Puoi farlo anche con molte altre chiamate di sistema ...

Abbinando i parametri di open()nella tua grepricerca puoi anche scoprire in quale modalità è stato aperto il file:

Basta aggiungere | grep -P 'O_RDONLY|O_RDWR'(il carattere principale della pipe è importante!) Per filtrare l'accesso in lettura o | grep -P 'O_WRONLY|O_RDWR'per l'accesso in scrittura al comando ...

MODIFICA :

Come accennato nei commenti, puoi anche utilizzare strace -fe open firefoxper elencare tutti i file aperti da FireFox. Puoi anche usare strace -fe trace=file firefoxper elencare tutte le operazioni sui file eseguite da FireFox che hanno un percorso di file come argomento (open, stat, lstat, chmod, access, ...).

Molti altri sono disponibili! Controlla la pagina del manuale di strace (1) .


1
Sono piuttosto sorpreso che Firefox eseguirà una shell per grep "netscape" dalla lista dei processi.
Michael,

1
strace ha ampie funzionalità di filtro integrate. Prova strace -e opena mostrare solo le chiamate a open(), ad esempio.
John Kugelman,

@Michael genera una shell perché usa una pipe ("|") che è la sintassi della shell. È possibile impostare manualmente la stessa pipe dal codice, ma è molto più semplice lasciare che una shell lo faccia - purché si sappia che non vi è alcuna possibilità che i codici di escape della shell vengano passati dall'utente, il che può portare a vulnerabilità della sicurezza.
Alistair Buxton,

1

in realtà esiste una modalità denominata modalità dettagliata ma non sono sicuro che Firefox abbia tale opzione. Ma nessun problema, ogni applicazione sarà composta dal suo registro. Quindi puoi controllare l'attività dell'applicazione controllando i suoi dati di registro.

Se si desidera abilitare il registro per Firefox, è possibile verificarlo

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

ogni attività dell'applicazione in Ubuntu è possibile verificare con i loro registri specifici. tutte le applicazioni accederanno alla /var/logdirectory.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.