14 votos

¿Cómo determinar qué proceso está creando un archivo?

De repente han aparecido dos archivos en mi directorio personal, llamados "aa" y "err". Están vacíos. Me pregunto cómo han llegado ahí. He borrado los archivos y se vuelven a crear al cabo de unos segundos.

¿Existe alguna forma de controlar la creación de archivos en el directorio root para saber de dónde proceden?

Menciono que lsof no pudo ayudar en este caso (obtuve un resultado vacío utilizando lsof aa )

0 votos

Parecen restos de un intento de programar en Node.js. Mira cómo las variables en este hilo de Stack Overflow se llaman .

0 votos

@JakeGould, gracias pero tu enlace muestra un código personalizado. No está relacionado.

21voto

Oskar Puntos 1242

fs_usage es tu herramienta para ello.

La herramienta de uso del sistema de archivos es ideal, ya que se conecta a los eventos del sistema de archivos en tiempo real y vuelca la actividad a un archivo o a la pantalla. Dado que conoces la ruta exacta del archivo, puedes filtrar todos los miles de cambios irrelevantes (en este caso) del sistema de archivos y ver lo que se lee / escribe en ese archivo con bastante rapidez.

Si su directorio personal es /Users/me puede filtrar por /Users/me/aa

mac:~ me$ sudo fs_usage | grep /Users/me/aa
09:35:21  stat64            /Users/me/aa      0.000033   touch       
09:35:21  utimes            /Users/me/aa      0.000104   touch       
09:35:21  fsgetpath         /Users/me/aa      0.000119   Finder      
09:35:22  lstat64           /Users/me/aa      0.000039   fseventsd   
09:35:22  fsgetpath         /Users/me/aa      0.000027   mds         
09:35:22  getattrlist       /Users/me/aa      0.000064   mds         
09:35:22  listxattr         /Users/me/aa      0.000012   mds         
09:35:22  getattrlist       /Users/me/aa      0.000130   mds         
09:35:22  getattrlist       /Users/me/aa      0.000033   mds         
09:35:22  open              /Users/me/aa      0.000071   mdworker_sha
09:35:22    RdData[AT2]     /Users/me/aa      0.000331 W mdworker_sha
09:35:22  getattrlist       /Users/me/aa      0.000042   mds         
09:35:24  lstat64           /Users/me/aa      0.000114   rm          
09:35:24  access            /Users/me/aa      0.000209   rm          
09:35:24  unlink            /Users/me/aa      0.000909   rm          
09:35:25  lstat64           /Users/me/aa      0.000042   fseventsd   
09:35:25  lstat64           /Users/me/aa      0.000006   rm          

(nota: he suprimido mucho espacio en blanco arriba - el fs_usage muestra una gran cantidad de espacio vacío para que no pueda ver fácilmente el comando toque comando en el extremo derecho si copio/pego la salida exacta).

Aquí utilizo el touch para crear el archivo, añadirle una cadena y luego rm desde la línea de comandos.

mac:~ me$ touch ~/aa
mac:~ me$ echo foo >> ~/aa
mac:~ me$ rm ~/aa

Habrá toneladas de otras aplicaciones que leer, por lo que puede filtrar en el stat64 y lstat74 si hay demasiadas lecturas de atributos y actividad de focos en torno al archivo una vez creado.

La página del manual de este comando es bastante densa (y no es un "cómo se hace"), lo cual es típico pero mejor que ninguna documentación de Apple sobre cómo usarlo.

0 votos

Wow gracias. gran respuesta. Creo que el comando fs_usage se basa en la facilidad FSEvents de MacOS. ¿Sabe usted si esta instalación se puede utilizar también desde dentro de una aplicación de iOS?

0 votos

@bmike, cuando se utiliza touch podemos ver stat64 y open comandos. Me pregunto qué comando crea realmente el archivo. En mi caso me sale directamente lo siguiente sin nada antes fsgetpath de Finder : imgur.com/a/AsA9O5s

0 votos

Esa sería una buena pregunta complementaria. En mi caso, el stat64 creó el archivo. Dudo Finder y mds están creando el archivo en su caso, así que tendría que ver más de los registros para ayudar. @Kwadz Cuando se elimina el archivo, ¿cuál es la primera entrada en el fs_usage ?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X