He intentado que tracefile
. Para mí, dio muchos menos partidos que el mío strace ... | sed ... | sort -u
. Incluso agregué -s256
a la strace(1)
línea de comando pero no ayudó mucho ...
Entonces lo intenté loggedfs
. Primero falló ya que no tenía acceso de lectura / escritura al directorio en el que intenté iniciar sesión. Después de hacer chmod 755 temporalmente, recibí algunos golpes ...
Pero, para mí, hacer lo siguiente parece funcionar mejor:
inotifywait -m -r -e OPEN /path/to/traced/directory
Y luego procese el resultado después de ejecutar el proceso de interés.
Esto no detecta el acceso al proceso de archivos fuera del
directorio rastreado ni tampoco sabe si algún otro proceso accedió al mismo árbol de directorios, pero en muchos casos esta es una herramienta suficientemente buena para hacer el trabajo.
EDITAR: inotifywait no captura el acceso de enlace simbólico (solo los objetivos después de que se hayan resuelto los enlaces simbólicos). Esto me golpeó cuando archivé bibliotecas a las que accedió un programa para uso futuro. Usé un poco de piratería adicional de Perl Glob para elegir los enlaces simbólicos a lo largo de las bibliotecas notificadas para hacer el trabajo en ese caso particular.
Edit2: al menos cuando inotifying archivos y enlaces simbólicos propios de línea de comandos inotifywait (por ejemplo, inotifywait -m file symlink
o inotifywait symlink file
) de salida mostrará el acceso a cuál es el primero en la línea de comandos (sin tener en cuenta el que, file
de symlink
se accede). inotifywait no admite IN_DONT_FOLLOW, que, cuando lo intenté programáticamente, solo hace que uno vea el acceso file
(que puede o no ser lo que uno espera ...) independientemente del orden en la línea de comandos
strace
, supongo que está específicamente interesado en Linux. ¿Correcto?