Monitoreo de cambios de archivo + acceso a procesos

19

Me gustaría ver qué sucede en las carpetas de mi servidor de aplicaciones, es decir, qué archivos se cambian por el proceso x o qué *.wararchivos se han cambiado (reemplazado / creado) en los últimos x minutos.

¿Hay alguna herramienta en Linux para ayudar con esto?

Martin V.
fuente
Hola, eche un vistazo a esta guía para configurar audited para monitorear directorios y archivos xmodulo.com/how-to-monitor-file-access-on-linux.html
Sifungurux
1
Llegué a esta pregunta a través de la búsqueda de Google, pero encontré mi respuesta aquí: unix.stackexchange.com/questions/18844/…
Quentin Skousen
Echa un vistazo a SystemTap. uselessuseofcat.com/?p=281
steve

Respuestas:

9

Dependiendo de sus necesidades exactas, es posible que desee buscar soluciones de inotify y / o FAM / GAMIN .

Peterph
fuente
14

Strace (como se describe anteriormente) es una forma de verificar las acciones de un software en ejecución específico.

Algunos comandos como watch find dir/ -mmin 1también pueden ayudar a verificar los cambios de última hora en algún directorio.

Dependiendo de lo que esté buscando exactamente, inotify-tools es probablemente otra herramienta de comercio aquí.

Por ejemplo, inotifywait -mr dir/monitorea los cambios en el directorio dado e instantáneamente le brinda comentarios sobre cualquier aplicación que intente abrir / leer / escribir / cerrar un archivo. Sin embargo, inotify no le brinda retroalimentación sobre qué aplicación o proceso está accediendo al archivo; eso es algo que strace hace.

Tenga en cuenta que la supervisión a nivel del sistema suele ser de uso limitado para el software java que se ejecuta en un entorno de contenedor de aplicaciones, ya que solo ve el contenedor (por ejemplo, Tomcat), pero no la aplicación real (por ejemplo, .war) que interactúa con el sistema.

knoepfchendruecker
fuente
8

Puede obtener información sobre a qué archivos accede por proceso lsof :

 lsof -n -p `pidof your_app`

Y viceversa, puede obtener un pid de proceso que escribe / lee en algún archivo:

 lsof -n -t file
trankvilezator
fuente
6

Puede usar stracepara monitorear todas las llamadas al sistema de un proceso, que incluye todo el acceso a los archivos.

Al comenzar un programa:

$ strace ./myserver

También puede adjuntar strace a un proceso en ejecución a través de su PID:

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859
umläute
fuente
sería genial monitorear también por carpeta, no por PID, gracias. btw strace -p PID funciona para mí en Ubuntu.
Martin V.
0

watch find dir/ -mmin 1 no funcionó para mí, lo que hizo fue simplemente copiar y diferir:

cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir

Es bastante intensivo en recursos, pero muestra todos los cambios entre la instantánea y el difftiempo.

serv-inc
fuente