Monitora continuamente i file aperti / accessibili tramite un processo


25

lsof -p 12345 elencherà tutti i file aperti dal processo il cui pid è 12345 ma solo per un determinato istante di tempo.

Come possiamo monitorare continuamente un processo dall'inizio alla fine (fino al termine del processo) per elencare / mostrare ogni singolo file a cui accede il processo durante la sua intera vita?


Risposte:


31

Prova con strace -p 12345; dovrebbe fare quello che stai cercando di ottenere.

L'output può essere filtrato per visualizzare solo i file aperti ( commento di Dan D. ):

strace -e open -p 12345

Nota: è anche possibile tracciare rapidamente i processi in esecuzione con strace -e open <command>.


l'output non è amichevole e troppe cose extra.
MA1

È possibile risolvere il problema eseguendo il piping - strace -p {pid} | grep -i "Open" | tee files_opened.log. Il tasto è grep, che consente di filtrare l'output per la chiamata di sistema desiderata (ad es open().).

11
@Ninefingers In realtà stracepuò farlo meglio che grepcon l' -eopzione:strace -e open
Dan D.

@DanD oh yeah, ofc :)

Quando uccido il comando strace, uccide anche la cosa che sta tracciando. Perché sta succedendo (Cygwin)?
CMCDragonkai,

6

La nuova utility fatrace farà questo: https://launchpad.net/fatrace/

sudo fatrace | grep '(6514)'

Non usare l'opzione -p, significa l'opposto di ciò che significa in lsof o altre utilità.


3

Questo eseguirà il ciclo eseguendo nuovamente il comando e cancellando lo schermo ogni volta:

watch "lsof -p 12345"

ATTENZIONE: questo perderà l'accesso rapido ai file ed è adatto solo per vedere file di vecchia data


2
Questo è un po 'goffo rispetto all'altra risposta che utilizza strace.
David Foerster,

1
Questa è una soluzione imprecisa - un processo può utilizzare i file tra le esecuzioni dilsof
Dor

@Puoi impostare il tempo di lsof su 1 secondo e aumentarne la precisione. Mentre è goffo rispetto ad altri, ti sbagli in quanto è una soluzione imprecisa.
Jordon Bedwell,

Se stai guardando un'operazione di file lunga (come un backup del database), questa potrebbe essere una buona alternativa semplice.
jcalfee314,
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.