la utilidad “opensnoop” no funciona con espacios entre los nombres de archivo, ¿cómo solucionarlo?

7

Uso "opensnoop"

/usr/bin/opensnoop

para mostrar todos los archivos que se abren desde diferentes procesos.

Pero cuando quiero especificar un archivo con

sudo opensnoop -n "directory/filename"

estoy recibiendo este error:

token too large, exceeds YYLMAX

Estoy buscando una solución y solo he encontrado este sitio web . El autor modificó el script opensnoop:

  

esto se debe a la línea 154 en / usr / bin / opensnoop que contiene   cadena en línea NAME="'$ pname'";   que produce un script dtrace con esta cita   cadena en línea NAME="foo '' bar";   y la primera comilla simple finaliza la invocación de dtrace dejando su script de entrada incompleto.   El parche rápido es reemplazar la línea 154 con   cadena en línea NAME="'" $ pname "'";

pero sigo recibiendo este mensaje de error.

¿Alguien puede ayudarme? ¿O dime otra utilidad donde pueda mostrar la aplicación que está trabajando actualmente con un archivo específico?

    
pregunta Bastian Gruber 14.04.2013 - 17:15

1 respuesta

8

-n solo debe utilizarse con nombres de proceso como sudo opensnoop -n System\ Preferences . Para ver qué procesos acceden a un archivo, use sudo opensnoop -f /tmp/a\ b.txt .

El cambio mencionado en la publicación del blog corrige -n pero no -f. Para corregir ambos, edite /usr/bin/opensnoop y reemplace estas líneas:

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

Con esto:

inline string PATHNAME = "'"$pathname"'";
inline string NAME = "'"$pname"'";
    
respondido por el user495470 14.04.2013 - 18:39

Lea otras preguntas en las etiquetas