¿Cómo monitorear el acceso a los archivos para una aplicación OS X?

57

Estoy buscando el corresponsal OS X de FileMon, que se incluyó más tarde en ProcessMon . / p>

Por cierto, es esencial poder filtrar por proceso.

    
pregunta sorin 18.05.2011 - 15:57

8 respuestas

57

Los instrumentos, que forman parte de la suite de desarrollo Apple Xcode, pueden monitorear el acceso a todos los archivos y las escrituras. Ábralo desde /Applications/Xcode.app/Contents/Applications/Instruments.app, seleccione su aplicación o proceso y presione Iniciar. Tiene amplias opciones de filtro disponibles en los menús.

Las versiones anteriores de Xcode almacenan la aplicación en /Developer/Applications/Instruments.app

    
respondido por el Aeyoun 19.05.2011 - 01:06
39

Hay el comando opensnoop . Ejecutar sin argumentos, puede abrumarlo con la salida, pero se puede ejecutar con los argumentos -n name para limitar la salida a los procesos llamados name .

    
respondido por el Harald Hanche-Olsen 18.05.2011 - 21:15
13

Launchd es la principal herramienta de nivel del sistema para monitorear archivos (y una carpeta es un archivo especial) ya que siempre se está ejecutando. Hazel es un programa que ayuda a poner una GUI bonita en torno a los WatchPaths de Launchd. Busque aquí muchos consejos sobre launchd, así como cientos de tutoriales, un buen artículo de wikipedia y los documentos de desarrollo de Apple.

fseventsd registrará algunos cambios, por lo que puede usar FSeventer o acceder a esos archivos Si Launchd no es tu taza de té.

fs_usage y lsof son una herramienta de línea de comandos que reconoce el proceso para acceder al subsistema IO ya que se está ejecutando. El búfer fs_usage puede sobrecargarse, por lo que si quiere algo más garantizado y menos de "echar un vistazo rápido" es menos confiable para obtener resultados totales correctos como los otros comandos.

    
respondido por el bmike 18.05.2011 - 16:07
9

Nadie ha mencionado el Monitor de actividad, que se encuentra en la carpeta /Applications/Utilities .

Haga clic en el Nombre del proceso en la lista, luego presione el botón "Inspeccionar" en la barra de herramientas.

Hay tres pestañas en la ventana resultante: Memory , Statistics , Open Files and Ports . La pestaña Open Files and Ports mostrará todos los archivos abiertos utilizados por el proceso.

    
respondido por el ghoppe 18.05.2011 - 21:55
3
  

lsof

comando en el Terminal.app puede hacer eso por ti? use el man lsof para ponerse al día con su uso. Saludos

    
respondido por el kOoLiNuS 18.05.2011 - 16:09
2

La forma más rápida es:

$ lsof [path_to_file]

Esta solución no requiere la contraseña de root y le devuelve el siguiente resultado, claro:

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
    
respondido por el bontoJR 01.11.2013 - 09:41
1

También están disponibles iosnoop y iotop dependiendo de sus necesidades específicas. Estos comandos de terminal pueden canalizarse a través de grep para observar eventos del sistema de archivos de un proceso específico o contra un archivo específico.

    
respondido por el beporter 05.07.2015 - 17:59
0

Hay una interfaz gráfica para la información de tipo lsof . Es un software de donación de HAMSoft y se llama What's Keeping Me . Diseñado para responder a eso "¿Por qué no puedo eliminar esto de mi basura?" La pregunta que aparece de vez en cuando en OS X, también resulta ser una forma útil de vigilar los controles abiertos de E / S en los procesos en ejecución si solo tiene curiosidad por lo que está sucediendo. Te permite una simple búsqueda y filtrado.

    
respondido por el Ian C. 18.05.2011 - 20:33

Lea otras preguntas en las etiquetas