Scopri quale processo sta scrivendo in una directory specifica


19

Ho una directory / some / dir e vedo che i nuovi file appaiono sempre lì. Come faccio a sapere quale processo sta creando quei file?

Risposte:


18

Prova lsof +r2 | grep '/some/dir'. Questo mostrerà i processi che accedono a / some / dir e si aggiorna ogni 2 secondi.


2
Grazie, questo è abbastanza vicino a ciò di cui ho bisogno, in quanto produce prima l'intero elenco di file aperti, quindi filtra per / some / dir. Tuttavia, se i processi creano i file molto rapidamente e non li mantengono aperti, capisco che quanto sopra potrebbe mancare anche alcuni. Penso che in quel caso l'unica opzione sia il sottosistema di audit, giusto?
homer5439,

Il tuo presupposto è giusto. Un'altra idea è quella di usare inotifywait, vedi linux.die.net/man/1/inotifywait
weeheavy

grazie, avevo già considerato inotify gli strumenti prima, tuttavia ho scoperto che funzionano esclusivamente a livello di filesystem e non sembrano essere in grado di fornire informazioni su chi ha fatto cosa.
homer5439,

18

Usa il auditsottosistema kernel

auditctl -w /some/dir/ -p war -k whatsgoingon

Ciò crea un hook in attesa che qualcosa accada in / some / dir /.

Quindi assicurati di avere un auditddemone in esecuzione. Dopodiché aspetta solo che i file vengano visualizzati e visualizzati da /var/log/auditd.logo ovunque nel tuo sistema scrivano e leggi cosa è successo e con quale processo.


Grazie, sembra che faccia esattamente questo, anche se richiede gli strumenti di controllo installati che probabilmente non sono ovunque per impostazione predefinita. Ma ok, se uno ha bisogno di tali informazioni, possono sempre essere installate.
homer5439,

Come nota per le persone che lo vedono: non è possibile posizionare orologi nelle directory di livello superiore (vietate dal kernel)
Tony Sepia,

1
È davvero un modo efficiente! Molte grazie!!! A proposito, quando hai finito, puoi rimuovere tutti gli hook per evitare di scrivere il registro di controllo per sempre auditctl -D. È possibile utilizzare auditctl -lper elencare tutti gli hook.
Robert

0

lsof può aiutare:

# lsof -r1 /some/dir/*

1
Grazie. È corretto che il comando precedente mi dica solo chi accede ai file esistenti ma non mostra nulla per i file appena creati? La mia comprensione è che / some / dir / * si espande all'elenco dei file presenti al momento del richiamo del comando.
homer5439,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.