2012-07-21 13 views
5

so che c'è un comando del fusore che elenca i pid dei processi, ma come si monitora continuamente quale processo ha avuto accesso al file? (pensare un comportamento simile al nomefile tail -f)Come monitorare i processi che hanno avuto accesso a un determinato file?

dire che c'è un processo che scrive su un file e rilascia l'handle a un certo intervallo, quindi è difficile prendere quel processo usando il fusore.

+0

Si prega di controllare http://linux.die.net/man/7/inotify – Jayan

+0

Come (non) invadente e (non) interattivo avete bisogno/può permettersi di essere? I sondaggi di @ cravoori potrebbero funzionare se l'intervallo che menzioni è abbastanza lungo; la sostituzione del file con una named pipe e la saturazione del suo buffer bloccheranno tutti gli scrittori in modo che tu possa identificarli a tuo piacimento ma potrebbero non essere il tipo di soluzione che stai cercando; infine, è possibile definire il proprio Linux [kernel tracepoints] (http://netsplit.com/2011/03/07/tracing-on-linux/) per tracciare quale processo ha aperto un particolare file per la scrittura. – vladr

risposta

1

è possibile controllare l'esecuzione dei comandi a intervalli periodici. Watch supporta anche una bandiera differenze ai fini delle differenze che evidenziano su corse consecutive

watch -n 5 'fuser file_name' 
+0

non funziona davvero per me ... le scritture sul file sono piuttosto brevi e l'uso dell'orologio non lo ha catturato (ho provato anche a guardare 1) – the1plummie

0

Si potrebbe utilizzare inotifywatch, supponendo che si sono su una Linux.

Questo comando stampa tutti gli accessi e modifica su un file per 60 secondi, quindi stampa le statistiche.

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

È possibile ottenere la fonte di inotifywatch come https://github.com/rvoicilas/inotify-tools/wiki

+2

Questo mostrerà il numero di accessi/modifiche, ma c'è un modo per scoprire * quale processo * ha avuto accesso/modificato il file? – aioobe

Problemi correlati