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
Mateusz M.

Ostatnie wpisy

Podsumowanie: luty i marzec 2024

Ostatnio tygodnie były tak bardzo wypełnione, że nie udało mi się napisać nawet krótkiego podsumowanie. Więc dziś zbiorczo podsumuję luty… Read More

1 tydzień ago

Podsumowanie: styczeń 2024

Zapraszam na krótkie podsumowanie miesiąca. Książki W styczniu przeczytałem "Homo Deus: Historia jutra". Książka łudząco podoba do wcześniejszej książki tego… Read More

2 miesiące ago

Podsumowanie roku 2023

Cześć! Zapraszam na podsumowanie roku 2023. Książki Zacznijmy od książek. W tym roku cel 35 książek nie został osiągnięty. Niemniej… Read More

3 miesiące ago

Podsumowanie: grudzień 2023

Zapraszam na krótkie podsumowanie miesiąca. Książki W grudniu skończyłem czytać Mein Kampf. Nudna książka. Ciekawsze fragmenty można by było streścić… Read More

4 miesiące ago

Praca zdalna – co z nią dalej?

Cześć, ostatnio w Internecie pojawiło się dużo artykułów, które nie były przychylne pracy zdalnej. Z drugiej strony większość komentarzy pod… Read More

4 miesiące ago

Podsumowanie: listopad 2023

Zapraszam na krótkie podsumowanie miesiąca. Książki W listopadzie dokończyłem cykl "Z mgły zrodzony" Sandersona. Tylko "Stop prawa" mi nie do… Read More

5 miesięcy ago