2009-07-25 7 views
11

Znalazłem w IOStat, że część mojej aplikacji pisze obszernie, ale nie wiem, który to proces i do jakich plików pisze. W systemie Vista znajduje się narzędzie pokazujące pliki, które były aktywne w ciągu ostatnich 30 sekund. Czy jest coś podobnego w Linuksie?Narzędzie, które pokazuje mi, które pliki są napisane w systemie Linux?

+0

Jus t z ciekawości: znam filemona, ale do jakiego narzędzia w Visty się odwołujesz? –

+0

@ Panel administracyjny Leudwig -> Narzędzia administracyjne -> Monitor niezawodności i wydajności. Następnie kliknij pasek z napisem Dysk. Pokazuje najbardziej aktywne pliki i procesy, które odczytują lub zapisują. –

+0

Już na serwerze ServerFault: http: // serverfault.com/questions/224629/see-what-files-is-being-written-to-like-iotop-but-for-files-not-processes –

Odpowiedz

3

Aby znaleźć wszystkie pliki zmodyfikowane w ciągu ostatnich 24 godzin (ostatni pełny dzień), w szczególności określonym katalogu i jego podkatalogów:

znaleźć/Directory_Path -mtime -1 -print

więcej na:

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

+0

Czy jest też jakiś sposób na monitorowanie aktywności (przeczytaj write kb/s) na poszczególnych plikach? Serwer jest dość aktywny i wiele plików się zmieniło, ale potrzebuję tych z najwyższym transferem ... – smint

2

Nie jesteś pewien programu, ale polecenie find w narzędziu ma wiele opcji, które pozwolą ci znaleźć pliki i/lub katalogi, które zostały zmodyfikowane w określonym przedziale czasu.

Na przykład:

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

znajdzie pliki tekstowe, które zostały ostatnio zmodyfikowano 1 dzień temu.

Możesz zawinąć to połączenie w jakiś skrypt lub napisać własną, szybką aplikację, aby użyć wyników.

Oto strona z przykładami i więcej informacji:

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

1

Linux zapewnia API powiadamiania o zmianie pliku o nazwie "dnotify" oraz narzędzie wiersza poleceń dnotify. Możesz go użyć do śledzenia zmian w ciągu ostatnich 30 lat.

Prawdopodobnie napiszę aplikację, która będzie budować bezpośrednio na Linuksie API i odrzuci wszystkie zdarzenia starsze niż 30 sekund.

+0

Dziękuję, miałem nadzieję, że jest coś już istniejący. – smint

1

lsof będzie lista wszystkich otwartych plików dla danego procesu:

lsof -p

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

pokaże Ci dokładnie jakie pliki aplikacja czyta i writong

+0

Czy strace będzie działać na całym drzewie procesu, czy tylko na jednym procesie? –

+0

Nie będzie działać na całym drzewie, ale można użyć opcji '-p pid', aby dołączyć do 32 procesów – PiedPiper

+2

lub użyć '-f' do śledzenia procesów potomnych, ponieważ są one tworzone przez obecnie śledzone procesy w wyniku widełkowego (2) wywołanie systemowe – PiedPiper

5

Jeśli chcesz zobaczyć dostęp do wszystkich plików w czasie rzeczywistym (do 32 procesów) można użyć tego polecenia:

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'` 
Powiązane problemy