Polecenie Linux LSOF

Polecenie Linux LSOF
Narzędzie polecenia „LSOF” w Linux jest jednym z wielu wbudowanych narzędzi, które są bardzo przydatne do sprawdzania „listy otwartych plików”. Tak, termin „lsof” to skrót zadania.

W systemie działa wiele procesów, uzyskując dostęp do różnych plików systemu. Pliki te mogą być pliki dysku, skrypty, gniazda sieciowe, urządzenia, nazwane rury i inne. Korzystając z „LSOF”, można wykonać wiele rzeczy, takich jak debugowanie. Jest to również bardzo przydatne dla administratorów systemowych, aby dowiedzieć się, do jakiego pliku są dostępne w ramach procesów. Jednym z najbardziej przydatnych scenariuszy, jakie znalazłem, jest to, że masz zamiar nie zrobić systemu plików, ale nadal jest dostępny.

Bez zbędnych ceregieli, zacznijmy od „LSOF”! Zakładam, że twój obecny system UNIX/Linux ma już zainstalowany „LSOF”.

Lokalizacja

które lsof

To podaje pełną ścieżkę polecenia, w tym przypadku „LSOF”.

Wersja „LSOF”
LSOF -V

Zgłosi to szczegółowe informacje o wersji „LSOF”, w tym datę budowy wersji binarnej, kompilatora, flag kompilatora i innych.

Podstawowe użycie „LSOF”

Uruchom „LSOF” sam.

lsof

Zgłasza dużą listę wszystkich plików, do których dostęp jest dostępny w momencie uruchomienia polecenia.

Podczas gdy wszystkie pola są oczywiste, głównie mylą się co do kolumn „FD” i „Typ” i ich wartości. Sprawdźmy je.

FD: Skrót „Deskryptora pliku”. Wypowiada następujące wartości.

  • CWD: Obecny katalog roboczy
  • RTD: katalog główny
  • TXT: Tekst programu (dane, kod i inne)
  • MEM: plik mapowany na pamięć
  • ERR: Błąd informacji FD
  • MMAP: urządzenie mapowane na pamięć
  • LTX: Udostępniony tekst biblioteki (dane i kod)
  • M86: Plik zmapowany do scalania DOS

Istnieją również inne wartości, które zauważysz w kolumnie, takie jak „1U”, a następnie U, R, W itp. wartość. Co to znaczą?

  • R: Odczyt dostępu
  • W: Dostęp do zapisu
  • U: Przeczytaj i zapisz dostęp
  • - : Tryb nieznany i zawiera znak blokady
  • „: Tryb jest nieznany i nie ma charakteru blokady

Typ: opisuje typ pliku i jego identyfikacja. Wartości są następujące.

  • Dir: Directory
  • CHR: Plik charakterystyczny
  • Reg: Plik zwyczajny
  • FIFO: Po pierwsze, po raz pierwszy

Otwarte pliki specyficzne dla użytkownika

Linux to genialna platforma wielu użytkowników. Wielu użytkowników może uzyskać dostęp do systemu w tym samym czasie i wykonywać operacje, na które mają pozwolenie.

Aby sprawdzić pliki, do których dostęp jest dostępny przez określonego użytkownika, uruchom następujące polecenie.

lsof -u

Jednak w celu sprawdzenia użytkowników o wyższej randze „LSOF” będzie potrzebował uprawnienia „Superuser”.

sudo lsof -u

Co powiesz na sprawdzenie wszystkich poleceń i plików, do którego uzyskuje dostęp do określonego użytkownika? Uruchom następujący.

lsof -i -u

Ponownie, dla użytkowników o wyższej randze, „LSOF” będzie potrzebować przywileju „Superuser”.

sudo lsof -i -u

Procesy działające specyficzne dla portu

Aby znaleźć wszystkie procesy, które obecnie korzystają z określonego portu, zadzwoń „LSOF” z flagą „-i”, a następnie informacje o protokole i porcie.

lsof -i<46><@hostname|host_address>
:

Na przykład, aby sprawdzić wszystkie programy dostępne do portu 80 w stosunku do protokołu TCP/IP, uruchom następujące polecenie.

LSOF -i TCP: 80

Tę metodę można również zastosować do pokazania wszystkich procesów wykorzystujących porty w określonym zakresie, na przykład 1 do 1000. Struktura poleceń jest podobna do wcześniejszej z małą magią na części portu.

LSOF -i TCP: 1-1000

Procesy specyficzne dla protokołu

Oto 2 przykłady pokazujące procesy, które obecnie korzystają z protokołów IPv4 i IPv6.

lsof -i 4
LSOF -i 6

Wymień połączenia sieciowe

Poniższe polecenie zgłosi wszystkie połączenia sieciowe z bieżącego systemu.

lsof -i

Wykluczając z ^

Tak, możemy wykluczyć określonego użytkownika, portu, FD i innych, używając postaci „^”. Wszystko, co musisz zrobić, to użyć go ostrożnie, aby nie zepsuć całego wyjścia.

W tym przykładzie wykluczmy wszystkie procesy z użytkownika „root”.

lsof -u^root

Istnieją inne sposoby wykorzystania tego wykluczającego mechanizmu z „LSOF”, na przykład z flagami takimi jak „-c”, „-d” itp. Nie wszystkie flagi potwierdzają ten mechanizm. Dlatego polecam wypróbowanie wersji demo z tą metodą z dowolną flagą przed wdrożeniem jej w niektórych skryptach.

Wyszukiwanie PID

PID jest ważną właściwością każdego procesu działającego w systemie. Umożliwia drobniejsze wskazanie określonego procesu. Nazwa procesu nie jest bardzo pomocna w wielu sytuacjach, ponieważ ten sam binarny może tworzyć kopie i wykonywać różne zadanie równolegle.

Jeśli nie wiesz, jak zdobyć PID procesu, po prostu użyj „PS”, aby wymienić wszystkie uruchomione procesy i odfiltrować wyjście za pomocą „GREP” z nazwą procesu i/lub poleceń.

ps -a

Teraz wykonaj filtrowanie za pomocą „GREP”.

Ps -a | Grep

Teraz sprawdź, do jakich plików ma dostęp do PID.

lsof -p

Wymień otwarte pliki dla określonego urządzenia

Funkcjonalność „LSOF” nie ogranicza się tylko do tych funkcji. Możesz także odfiltrować wynik „LSOF” według podstaw. W tym celu polecenie będzie wyglądać mniej więcej tak.

lsof

To polecenie jest bardzo przydatne, aby znaleźć wszystkie uruchomione procesy, a ich informacje o właścicielu uzyskują dostęp do konkretnego systemu plików. Jeśli masz problemy z odłączeniem systemu plików, jest to najlepszy sposób.

lsof

Lista otworzyła pliki w katalogu

Podobnie jak w poprzednim przykładzie, po prostu przejdź ścieżkę katalogu do „LSOF”, aby dowiedzieć się, czy jakikolwiek proces jest do niego dostęp.

Uwaga: „LSOF” sprawdzi rekurencyjnie katalog, więc może to zająć trochę czasu.

= lsof +d

Bonus: zakończ całą aktywność użytkownika

Bądź bardzo ostrożny z tą częścią, ponieważ może po prostu zepsuć wszystko, co robi użytkownik. Poniższe polecenie zabije wszystkie uruchomione procesy użytkownika.

sudo zabij -9 'lsof -t -u

Końcowe przemyślenia

Funkcje „LSOF” nie tylko zatrzymują się tutaj. Te wspomniane tutaj to te, których najbardziej potrzebujemy na co dzień. Istnieje wiele innych funkcji „LSOF”, które mogą się przydać (oczywiście w określonych przypadkach).

Aby uzyskać wszystkie dostępne funkcje i ich użycie, sprawdź strony Man i Info „LSOF”.

Man lsof
Informacje LSOF
lsof -?

Cieszyć się!