¿Equivalente de SysInternals FileMon para Linux?

13

Estoy intentando depurar una aplicación en Ubuntu: necesito escuchar los intentos de abrir archivos (incluso para archivos que no existen).

Process Monitor (anteriormente conocido como FileMon ) está disponible en Windows: ¿qué hay en el cinturón de utilidades de Ubuntu?

¡Gracias!

Ashley

galletas de pollo
fuente

Respuestas:

7

Estás buscando strace. Echa un vistazo aquí: https://wiki.ubuntu.com/Strace

Evan Anderson
fuente
2
Según tengo entendido, ejecutar filemon le permite al usuario ver todos los accesos a los archivos. strace, por otro lado, requiere que especifiques qué aplicación abrir primero. Esto requiere que sepa de antemano, la aplicación que está accediendo a esos archivos. ¿Qué sucede si no sabe qué aplicación está accediendo a los archivos que le interesan?
chuacw
8

Depende de lo que quieras:

  • En general, desea ver inotify para ver todos los accesos a archivos que realiza cualquier proceso.

  • En el pequeño, strace le permitirá ver las llamadas al sistema que realiza un proceso en particular. Strace es bastante asombroso. Puede rastrear las llamadas de un proceso a 'abrir' haciendo strace -f -eopen $cmd, por ejemplo. La página del manual tiene todos los detalles sobre la sintaxis, por supuesto.

pjz
fuente
Gracias pjz. Para ser muy específico, estoy teniendo algunos problemas para comenzar a usar Ogre3d en Ubuntu. Mi aplicación de prueba parece estar buscando algunos archivos .cfg durante el inicio. Quiero escuchar todos los intentos de abrir archivos para asegurarme de que los archivos correctos estén disponibles y tengan los permisos correctos.
chickeninabiscuit el
strace -e abierto ./app
Justin
2

stracefrente a una aplicación de inicio es bueno ver lo que está haciendo la aplicación.
lsofes bueno ver qué archivos está usando una aplicación que ya se está ejecutando.

Por cierto:
lsof -ni:22 muestra qué proceso está utilizando el puerto 22.

ThorstenS
fuente
1

Aquí hay un ejemplo del uso de strace para rastrear los cambios de archivos:

strace -f -e trace=file -p7546 -o /tmp/outputfile

-fgarantiza que se capturen los eventos de los procesos secundarios.
-e trace=filedice que deberíamos capturar las llamadas al sistema relacionadas con el archivo (p stat. ej . open, futexetc.)
-pes el ID del proceso (recuperado de ps -auxu otro medio) que -oespecifica el archivo de salida (puede haber muchos datos y en su lugar podría usar grep como filtro.

waitinforatrain
fuente
1

Prueba sysdig . Por ejemplo:

sysdig -A -c echo_fds

Camiseta
fuente
0

Esto es viejo, pero creo que es una buena idea actualizarlo para la realidad de hoy.

Para depurar solo un proceso y sus hijos, strace sigue siendo la mejor manera. Puede mostrar fácilmente todo el acceso a los archivos, incluso en los archivos que faltan.

Para la depuración genérica del sistema, la función de auditoría en el núcleo puede hacer eso y es la forma recomendada. No necesita ningún parche en los núcleos recientes, solo el paquete de auditoría instalado

Aquí hay una interfaz gráfica de usuario simple para usarlo:

auditoría-gui

Esto replica el filemon de Windows, monitoreando el acceso al archivo para todos los lugares, procesos, etc.

También revisa la publicación

higuita
fuente
0

Esto es lo que funcionó bien para mí (Linux Mint 19.1):

sudo lsof 2>&1 | grep programnamehere

No estoy seguro de por qué 2>&1era necesario, pero no se filtró a menos que lo usara.

Andrés
fuente