Asmo Slackware Page

8th September 2010

.::MENU::.

Wstęp
Mapa serwisu
Instalacja
Serwery
Artykuły
Tips&Tricks
Programowanie
ASP changelog
FORUM
FAQ
Linki
Ksiega gosci
O mnie

GG:
1710841


Co w otwartych plikach piszczy? Narzędzie lsof.


Każdy kto przynajmniej raz zetknął się z Linuksem bądź Unix wie, że wszystko jest w nich traktowane jako plik. Począwszy od dysków przez partycje a na wszelakich peryferiach kończąc. Oczywiście jest wiele rodzajów plików. Są pliki normalne, katalogi, pliki urządzeń, gniazda, itd. Ponieważ wszystko jest plikiem to system w każdym momencie pracy ma wiele otwartych plików. Co jeśli chcielibyśmy wiedzieć jakie pliki są otwarte, kto je otworzył lub jaki proces? Nic prostszego mamy przecież pod ranką bardzo dobre narzędzie stworzone właśnie do tego: lsof.

lsof jest potrafi odpowiedzieć na praktycznie każde pytanie dotyczące otwartych plików. Rzut oka na stronę podręcznika man tego programu pozwala stwierdzić, że ma imponującą liczbę opcji. Nie będę jednak omawiał każdej opcji. W tym artykule pokaże wam jedynie do czego można wykorzystać to bardzo przydatne narzędzie.

Przykłady

Zacznijmy od sprawdzenia ile jest otwartych plików w systemie:

# lsof | wc -l
1706

Świetnie! Wiemy, że jest 1706 otwartych plików. Może coś bardziej przydatnego? OK. Dowiedzmy się kto korzysta obecnie z Midnight Commander:

#lsof `which mc`

Można wyświetlić tylko PID (Proces IDentification):

#lsof -t `which mc`

W podobny sposób możemy dowiedzieć się z jakich plików korzysta mc:

#ls -c mc

Możemy oczywiście wyświetlić otwarte pliki procesu podając tylko jego PID:

#lsof -p 1524

A może po szpiegujemy użytkowników i sprawdzimy jakie pliki mają otwarte? Czemu nie?

#lsof -u thor

Wyświetli wszystkie pliki otwarte przez użytkownika thor. A co z połączeniami internetowymi? Oczywiście że się da! Sprawdźmy co lub kto używa portu 22:

#lsof -i:22

A może by tak sprawdzić kto z naszych użytkowników przegląda właśnie stronę playboy'a?

#lsof -i@www.playboy.com

A teraz coś o czym wspomniałem w rozdziale Tips&Triks. Każdy z nas spotkał się z tym wiele razy przy próbie odmontowania dysku: device is busy. Bardzo szybko możemy się dowiedzieć kto lub co powstrzymuje nas przed odmontowaniem urządzenia:

#lsof /dev/cdrom

To by było na tyle mam nadzieje że zainteresowałam was możliwościami tego bardzo przydatnego narzędzia. Po więcej szczegółów oraz przykładów odsyłam was do bardzo dobrego opracowania znajdującego się w dokumentacji pakietu lsof. Znajdziecie go w katalogu zawierającym zbiór dokumentacji dla każdego zainstalowanego pakietu czyli /usr/doc/ a konkretnie do /usr/doc/lsof-4.72/00QUICKSTART.

©Asmo , last modified: April 20 2008 23:28:11.