2012-07-21 9 views
5

sé que hay un comando fuser que enumera las fases de los procesos, pero ¿cómo supervisa continuamente qué proceso accedió al archivo? (pensar en un comportamiento similar al nombre de archivo tail -f)¿Cómo controlar los procesos que accedieron a un archivo en particular?

dicen que hay un proceso que se escribe en un archivo y libera el identificador en algún intervalo, por lo que es difícil capturar ese proceso con el fusor.

+0

Por favor, comprueba http://linux.die.net/man/7/inotify – Jayan

+0

Cómo (no) intrusivo y (no) interactivo Qué necesita ¿Puedo permitirme esto? El sondeo de @ravoori podría funcionar si el intervalo que menciona es lo suficientemente largo; reemplazar el archivo con una tubería con nombre y saturar su búfer bloqueará a todos los escritores para que pueda identificarlos en el ocio, pero puede que no sea el tipo de solución que está buscando; finalmente, puede definir su propio Linux [kernel tracepoints] (http://netsplit.com/2011/03/07/tracing-on-linux/) para rastrear qué proceso abrió un archivo en particular para escribir. – vladr

Respuesta

1

se podía ver a ejecutar comandos a intervalos periódicos. Reloj también es compatible con una bandera diferencias a los efectos de las diferencias que destacan en las tandas consecutivas

watch -n 5 'fuser file_name' 
+0

no funciona realmente para mí ... las escrituras en el archivo son bastante breves y el uso del reloj no lo captó (intenté también mirar -n 1) – the1plummie

0

Usted podría utilizar inotifywatch, asumiendo que son en un sistema Linux.

Este comando imprimirá todos los accesos y modifica en un archivo durante 60 segundos, a continuación, imprime las estadísticas.

inotifywatch -v -e access -e modify -t 60 filename 

Usted puede obtener la fuente de inotifywatch como https://github.com/rvoicilas/inotify-tools/wiki

+2

Esto mostrará el número de accesos/modificaciones, pero ¿hay alguna manera? para averiguar * qué proceso * accedió/modificó el archivo? – aioobe

Cuestiones relacionadas