l'utility "opensnoop" non funziona con gli spazi tra i nomi dei file, come risolvere?

7

Io uso "opensnoop"

/usr/bin/opensnoop

per mostrare tutti i file aperti da processi diversi.

Ma quando voglio specificare un file con

sudo opensnoop -n "directory/filename"

ricevo questo errore:

token too large, exceeds YYLMAX

Sto cercando una soluzione e ho trovato solo questo sito . L'autore ha modificato lo script di opensnoop:

this is due to line 154 in /usr/bin/opensnoop containing inline string NAME = "'$pname'"; that produces a dtrace script with this quoting inline string NAME = "foo' 'bar"; and the first single quote ends the dtrace invocation leaving its input script incomplete. The quick patch is to replace line 154 with inline string NAME = "'"$pname"'";

ma sto ancora ricevendo questo messaggio di errore.

Qualcuno può aiutarmi? O dimmi un'altra utility in cui posso mostrare l'app che sta attualmente lavorando con un file specifico?

    
posta Bastian Gruber 14.04.2013 - 17:15
fonte

1 risposta

8

-n è pensato solo per essere utilizzato con nomi di processi come sudo opensnoop -n System\ Preferences . Per vedere quali processi accedono a un file, utilizza sudo opensnoop -f /tmp/a\ b.txt .

La modifica menzionata nel post del blog risolve -n ma non -f. Per correggere entrambi, modifica /usr/bin/opensnoop e sostituisci queste righe:

inline string PATHNAME = "'$pathname'";
inline string NAME = "'$pname'";

Con questo:

inline string PATHNAME = "'"$pathname"'";
inline string NAME = "'"$pname"'";
    
risposta data 14.04.2013 - 18:39
fonte

Leggi altre domande sui tag