7 votes

L'utilitaire "opensnoop" ne fonctionne pas avec les espaces entre les noms de fichiers, comment le corriger ?

J'utilise "opensnoop"

/usr/bin/opensnoop

pour afficher tous les fichiers ouverts par différents processus.

Mais lorsque je veux spécifier un fichier avec

sudo opensnoop -n "directory/filename"

Je reçois cette erreur :

token too large, exceeds YYLMAX

Je suis à la recherche d'une solution et je n'ai trouvé que ce site web . L'auteur a modifié le script opensnoop script :

Ceci est dû à la ligne 154 dans /usr/bin/opensnoop qui contient inline string NOM = "'$pname'" ; qui produit un dtrace script avec cette citation chaîne en ligne NOM = "foo' 'bar" ; et le premier guillemet simple met fin à l'invocation de dtrace en laissant son script incomplet. La solution rapide consiste à remplacer la ligne 154 par chaîne de caractères en ligne NOM = "'"$pname"'" ;

mais je reçois toujours ce message d'erreur.

Quelqu'un peut-il m'aider ? Ou me dire un autre utilitaire où je peux montrer l'application qui est en train de travailler avec un fichier spécifique ?

8voto

Fuzzy Purple Monkey Points 702

-n est uniquement destiné à être utilisé avec des noms de processus tels que sudo opensnoop -n System\ Preferences . Pour savoir quels processus accèdent à un fichier, utilisez sudo opensnoop -f /tmp/a\ b.txt .

La modification mentionnée dans le billet de blog corrige -n mais pas -f. Pour corriger les deux, éditez /usr/bin/opensnoop et remplacer ces lignes :

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

Avec ceci :

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X