Come monitorare l'accesso ai file per un'applicazione OS X?

57

Sto cercando il corrispondente di OS X di FileMon, che è stato successivamente incluso in ProcessMon .

BTW, è essenziale poter filtrare per processo.

    
posta sorin 18.05.2011 - 15:57
fonte

8 risposte

57

Gli strumenti, una parte della suite di sviluppo Apple Xcode, possono monitorare tutti gli accessi e le scritture ai file. Aprilo da /Applications/Xcode.app/Contents/Applications/Instruments.app, seleziona la tua applicazione o processo e premi Start. Hai a disposizione numerose opzioni di filtro nei menu.

Le versioni precedenti di Xcode memorizzano l'app su /Developer/Applications/Instruments.app

    
risposta data 19.05.2011 - 01:06
fonte
39

Esiste il comando opensnoop . Eseguito senza argomenti, potrebbe sovraccaricarti di output, ma può essere eseguito con argomenti -n name per limitare l'output ai processi denominati name .

    
risposta data 18.05.2011 - 21:15
fonte
13

Launchd è il principale strumento a livello di sistema per il monitoraggio dei file (e una cartella è un file speciale) poiché è sempre in esecuzione. Hazel è un programma che aiuta a mettere una bella interfaccia grafica intorno a launchd WatchPaths. Guarda qui per un sacco di suggerimenti su launchd così come centinaia di tutorial, un buon articolo su Wikipedia e i documenti di sviluppo di Apple.

fseventsd registrerà alcune modifiche - quindi potresti usare FSeventer o accedere a quei file se launchd non è la tua tazza di tè.

fs_usage e lsof è uno strumento da riga di comando per attingere al sottosistema I / O come sta correndo. Il buffer fs_usage può essere sovraccaricato, quindi se vuoi qualcosa di più garantito e meno di un "dare una rapida occhiata" è meno affidabile per i risultati corretti come gli altri comandi.

    
risposta data 18.05.2011 - 16:07
fonte
9

Nessuno ha menzionato Activity Monitor, trovato nella cartella /Applications/Utilities .

Fai clic sul nome del processo nell'elenco, quindi seleziona il pulsante "Ispeziona" sulla barra degli strumenti.

Ci sono tre schede nella finestra risultante: Memory , Statistics , Open Files and Ports . La scheda Open Files and Ports mostrerà tutti i file aperti utilizzati dal processo.

    
risposta data 18.05.2011 - 21:55
fonte
3

lsof

Il comando

sul Terminal.app può farlo per te? usa man lsof per recuperare il suo utilizzo. Acclamazioni

    
risposta data 18.05.2011 - 16:09
fonte
3

Il modo più veloce è:

$ lsof [path_to_file]

Questa soluzione non richiede la password di root e ti restituisce il seguente risultato chiaro:

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
Finder     497  JR7   21r   REG    1,2   246223 33241712 image.jpg
QuickLook 1007  JR7  txt    REG    1,2   246223 33241712 image.jpg
    
risposta data 01.11.2013 - 09:41
fonte
1

Sono inoltre disponibili iosnoop e iotop in base alle tue esigenze specifiche. Questi comandi del terminale possono essere inviati tramite grep per controllare gli eventi del filesystem da un processo specifico o contro un file specifico.

    
risposta data 05.07.2015 - 17:59
fonte
0

C'è un'interfaccia grafica per le informazioni sul tipo lsof . È donationware di HAMSoft e si chiama Cosa mi trattiene . Progettato per rispondere "Perché non posso cancellare questo dal mio cestino?" La domanda che emerge ogni tanto su OS X, è anche un modo pratico per guardare gli handle I / O aperti sui processi in esecuzione se sei solo curioso di sapere cosa sta succedendo. Ti consente alcune semplici ricerche e filtri.

    
risposta data 18.05.2011 - 20:33
fonte

Leggi altre domande sui tag