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”.
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.
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ą?
Typ: opisuje typ pliku i jego identyfikacja. Wartości są następujące.
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 -uKoń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 lsofInformacje LSOFlsof -?Cieszyć się!