2009-07-25 12 views
11

Ho trovato in IOStat che una parte della mia applicazione sta scrivendo molto, ma non so quale processo sia e con quali file sta scrivendo. In Vista c'è uno strumento per ciò che mostra i file che sono stati attivi negli ultimi 30 secondi. C'è qualcosa di simile per Linux?Strumento che mi mostra quali file sono scritti in Linux?

+0

Jus Per curiosità: conosco filemon, ma a quale strumento di Vista ti riferisci? –

+0

@Ludwig Pannello di controllo -> Strumenti di amministrazione -> Monitoraggio affidabilità e prestazioni. Quindi fare clic sulla barra che dice Disco. Mostra i file più attivi e quali processi stanno leggendo o scrivendo. –

+0

È già su ServerFault: http: // serverfault.it/questions/224629/see-what-files-sono-essere-scritti-a-come-iotop-ma-per-file-non-processi –

risposta

3

Per trovare tutti i file modificati negli ultimi 24 ore (ultimo giorno intero) in una particolare directory specifica e le sue sottodirectory:

trovare/percorso_directory -mtime -1 -print

più a:

http://www.mydigitallife.info/2006/01/19/find-files-that-are-modified-today-or-since-certain-time-ago-in-unix/

+0

E c'è anche un modo per monitorare l'attività (leggi scrivi kb/s) su singoli file? Il server è abbastanza attivo e molti file vengono modificati, ma ho bisogno di quelli con il più alto trasferimento ... – smint

2

Non sicuro di un programma ma il comando find in utility ha molte opzioni che ti permetteranno di trovare file e/o directory che sono stati modificati in un certo periodo di tempo.

Ad esempio:

$ find /home/you -iname "*.txt" -mtime -1 -print 

avrebbero trovato file di testo che sono stati modificati 1 giorni fa.

È possibile racchiudere questa chiamata in una sorta di script o scrivere la propria app rapida per utilizzare i risultati.

Ecco un sito con alcuni esempi maggiori informazioni e:

http://www.cyberciti.biz/faq/howto-finding-files-by-date/

1

Linux fornisce un'API di notifica di modifica file denominata "dnotify", insieme a un'utilità della riga di comando dnotify. Puoi usarlo per tenere traccia delle modifiche negli ultimi 30 secondi.

Probabilmente scriverei un'applicazione che si basa direttamente sull'API di Linux e scarta tutti gli eventi precedenti a 30s.

+0

Grazie, speravo che ci fosse già qualcosa esistente. – smint

1

lsof elencherà tutti i file aperti per un dato processo:

lsof -p

7
strace -e trace=file -- <command> 

vi mostrerà esattamente quali file dell'applicazione è la lettura e writong

+0

Lavorerà a lungo su un intero albero del processo o su un solo processo? –

+0

Non funzionerà su un intero albero ma puoi usare l'opzione '-p pid' per allegare fino a 32 processi – PiedPiper

+2

o usare '-f' per tracciare i processi figli così come vengono creati dai processi attualmente tracciati come risultato della chiamata di sistema della forcella (2) – PiedPiper

5

Se volete vedere tutti i file di accesso in tempo reale (fino a 32 processi) è possibile utilizzare questo comando:

strace -f -e trace=file `ps aux | tail -n +2 | awk '{ORS=" "; print $2}' | sed -e 's/\([0-9]*\)/\-p \1 /g' | sed -e 's/\-p $//g'` 
Problemi correlati