Mateusz Mazurek – programista z pasją

Python, architektura, ciekawostki ze świata IT

Linux Programowanie Programowanie webowe Utrzymanie oprogramowania

Lsof – listowanie otwartych plików w linuxie

Cześć,
kontynuując temat zarządzania serwerami nie sposób nie wspomnieć o programie

lsof (czyli list open files)

Przydatne narzędzie podglądania listy otwartych plików oraz programów które ich używają. W sumie to tyle, zerknijmy na jakiś przykład może.

Polecenie to zazwyczaj zwraca sporo danych więc warto przerzucić output do less’a:

1
lsof | less

Stwórzmy sobie plik w katalogu domowym

1
touch test.t

i używając interaktywnej konsoli Python’a otwórzmy ten pliczek:

i zobaczmy jak widzi to lsof:

i od lewej idąc mamy nazwę procesu który trzyma uchwyt i jego ID. Potem nazwa użytkownika z którego chodzi proces. Kolumna z wartością „3r” to FD czyli file descriptor #3 a literka „r” oznacza że plik jest otwarty do odczytu (read). Tutaj może być kilka wartości np. mem, cwd, txt – oznacza to ogólnie w jaki sposób aplikacja otwierająca plik widzi go. Dalej mamy kolumnę TYPE i może ona przybrać takie wartości jak chociażby

1
2
3
4
REG – Regular File
DIR – Directory
FIFO – First In First Out
CHR – Character special file

No i dalej to już tylko numery urządzenia którego plik dotyczy no i rozmiar. Na sam koniec info jakiego pliku to dotyczy.

To urządzenie które jest enigmatycznie przedstawione jako „8,2” to nic innego jak dysk, lista jest dostępna w repo linuxa: klik a nasza 8mka to:

1
2
3
4
5
6
7
8
9
10
   8 block  SCSI disk devices (0-15)
0 = /dev/sda        First SCSI disk whole disk
16 = /dev/sdb       Second SCSI disk whole disk
32 = /dev/sdc       Third SCSI disk whole disk
...
240 = /dev/sdp      Sixteenth SCSI disk whole disk

Partitions are handled in the same way as for IDE
disks (see major number 3) except that the limit on
partitions is 15.

co znaczy że dwójka, po przecinku, oznacza partycję.

Lsof ma przydane przełączniki, np:

-p

pozwala zobaczyć pliki otwarte przez dany proces. Wziąłem proces którym otworzyłem wcześniej utworzony plik. Jak widać, trzyma on uchwyty nie tylko do mojego pliku.

podobnie zadziała przełącznik „-u” tylko będzie pokazywał rezultat dla usera:)

Co pozwala np. zabić wszystkie procesy konkretnego użytkownika:

1
kill -9 `lsof -t -u mmazurek`

Tak czy siak – fajne polecenie i dość istotne, bo jak wiadomo, wszystko w linuxie jest plikiem:)

Dzięki za wizytę,
Mateusz Mazurek

A może wolisz nowości na mail?

Subskrybuj
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments