(6 risposte)
Chiuso 4 anni fa.
Dato il percorso del file, come posso determinare quale processo lo crea (e/o lo legge/scrive)?
Risposta accettata:
Il lsof comando (già menzionato in diverse risposte) ti dirà quale processo ha un file aperto nel momento in cui lo esegui. lsof
è disponibile per quasi tutte le varianti di Unix.
lsof /path/to/file
lsof
non ti parlerà di file che sono stati aperti due microsecondi fa e chiusi un microsecondo fa. Se hai bisogno di guardare un particolare file e reagire quando si accede, hai bisogno di strumenti diversi.
Se puoi pianificare con un po' di anticipo, puoi mettere il file su un LoggedFS filesystem. LoggedFS è un filesystem in pila FUSE che registra tutti gli accessi ai file in una gerarchia. I parametri di registrazione sono altamente configurabili. FUSE è disponibile su tutte le principali unice. Ti consigliamo di registrare gli accessi alla directory in cui è stato creato il file. Inizia con il file di configurazione di esempio fornito e modificalo in base a questa guida.
loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory
tail -f /path/to/log_file
Molti unice offrono altre strutture di monitoraggio. Sotto Linux, puoi usare il relativamente nuovo sottosistema di controllo. Non c'è molta letteratura a riguardo (ma più che su logfs); puoi iniziare con questo tutorial o alcuni esempi o semplicemente con auditctl
pagina man. Qui dovrebbe essere sufficiente assicurarsi che il demone sia avviato, quindi eseguire auditctl
:
auditctl -w /path/to/file
(Penso che i sistemi più vecchi necessitino di auditctl -a exit,always -w /path/to/file
) e guarda i log in /var/log/audit/audit.log
.