Jak sprawdzić otwarte pliki w Linux

Jak sprawdzić otwarte pliki w Linux

Być może natkniesz się na powiedzenie: „Wszystko jest plik w Linux.„Chociaż nie jest to do końca prawdą, zawiera zbiór prawd.

W systemach Linux i Unika, wszystko jest jak plik. Oznacza to, że zasoby w systemie UNIX są przypisane deskryptorowi pliku, w tym urządzenia pamięci, gniazda sieciowe, procesy itp.

Deskryptor pliku to unikalny numer identyfikujący plik i inne urządzenia wejściowe/wyjściowe. Opisuje zasoby i sposób, w jaki do niej uzyskuje dostęp. Pomyśl o tym jak o bramie do zasobów sprzętowych abstrakcji jądra.

Niestety koncepcja deskryptorów plików wykracza poza zakres tego samouczka; Rozważ link podany poniżej, aby zacząć więcej nauki:

https: // en.Wikipedia.org/wiki/file_descriptor

Oznacza to, że systemy UNIX i UNIX, takie jak Linux, używają takich plików mocno. Jako zasilacz Linux, oglądanie otwartych plików, procesu i użytkowników ich używających jest niezwykle przydatne.

Ten samouczek skupi się na sposobach przeglądania otwartych plików i który proces lub użytkownik jest odpowiedzialny.

Wymagania wstępne

Zanim zaczniemy, upewnij się, że masz:

  • System Linux
  • Użytkownik z uprawnieniami root lub sudo

Jeśli je masz, zacznijmy:

Użyteczność LSOF

Utworzone przez Victora A Abell, Lista otwartych plików lub LSOF w skrócie, to narzędzie wiersza poleceń, które pozwala nam przeglądać otwarte pliki i procesy lub użytkowników, którzy je otworzyli.

Użyteczność LSOF jest dostępna w głównych rozkładach Linuksa; Może się jednak nie zainstalować, a zatem może wymagać instalacji ręcznie.

Jak zainstalować LSOF na Debian/Ubuntu

Aby zainstalować go w Debian, użyj polecenia:

Sudo apt-get Aktualizacja
sudo apt -get instaluj lsof -y

Jak zainstalować na Rehl/Centos

Aby zainstalować na Rehl i CentOS, użyj polecenia:

Aktualizacja Sudo DNF
sudo dnf instaluj lsof

Jak zainstalować na łuku

W Arch zadzwoń do menedżera pakietów za pomocą polecenia:

Sudo Pacman -sy
sudo pacman -s lsof

Jak zainstalować na Fedora

Na Fedorze użyj polecenia:

sudo yum instaluj lsof

Po zainstalowaniu i zaktualizowaniu narzędzia LSOF możemy zacząć go używać.

Podstawowe użycie LSOF

Aby użyć narzędzia LSOF, wprowadź polecenie:

sudo lsof

Po wykonaniu powyższego polecenia LSOF zrzuci wiele informacji, jak pokazano poniżej:

Powyższe dane wyjściowe pokazuje wszystkie pliki otwarte przez procesy. Wyjście ma różne kolumny, z których każda reprezentuje określone informacje o pliku.

  • Kolumna polecenia - pokazuje nazwę procesu, który używa pliku.
  • Pid - pokazuje identyfikator procesu procesu za pomocą pliku.
  • TID - Pokazuje identyfikator zadania (wątki) procesu.
  • Taskcmd - Reprezentuj nazwę polecenia zadania.
  • UŻYTKOWNIK - Właściciel procesu.
  • FD - Pokazuje numer deskryptora pliku. W ten sposób procesy używają pliku; Opcje dostępne w tym wyjściu kolumny obejmują:
  • CWD - Obecny katalog roboczy.
  • mem - plik mapowany na pamięć
  • Pd - nadrzędna Lokalizacja
  • jld - Katalog więzienia
  • LTX - Udostępniony tekst biblioteki
  • rtd - katalog główny.
  • tekst - Kod programu i dane
  • tr - Plik śladu jądra.
  • błądzić - Błąd informacji o deskryptorze pliku
  • MMP - Urządzenie mapowane na pamięć.
  • TYP - Pokazuje typ węzła powiązanego z plikiem, na przykład:
  • UNIX - dla gniazda domeny unix.
  • Reż - reprezentuje katalog
  • Reg - Reprezentowanie zwykłego pliku
  • Chr - reprezentuje plik znaków specjalnych.
  • POŁĄCZYĆ - symboliczny plik linku
  • Blk - Zablokować specjalny plik
  • Inet - Gniazdo domeny internetowej
  • FIFO - nazwana rura (pierwszy w pierwszym pliku)
  • RURA - dla rur

I wiele więcej.

  • URZĄDZENIA - Pokazuje numery urządzeń oddzielone przecinkami w kolejności pliku znaków specjalnych, bloków specjalnych, regularnych, katalogów i pliku NFS.
  • Rozmiar/wyłączenie - Pokazuje rozmiar pliku pliku PR przesunięcia w bajtach.
  • WĘZEŁ - pokazuje numer węzła pliku lokalnego, wpisz typ protokołu internetowego itp.
  • NAZWA - pokazuje nazwę punktu montażowego i FS, na którym znajduje się plik.

Notatka: Szczegółowe informacje o kolumnach można znaleźć w instrukcji LSOF.

Jak pokazać procesy, które otworzyły plik

LSOF zapewnia nam opcje, które pomagają nam filtrować wyjście, aby pokazać tylko procesy, które otworzyły określony plik.

Na przykład, aby zobaczyć plik, który otworzył plik /bin /bash, użyj polecenia jako:

sudo lsof /bin /bash

To da ci wyjście, jak pokazano poniżej:

Polecenie Użytkownika PID Typ FD Rozmiar urządzenia/Nazwa węzła OFF
KSMtuned 1025 root TXT Reg 253,0 1150704 428303/usr/bin/bash
Bash 2968 Centos TXT Reg 253,0 1150704 428303/USR/BIN/BASH
Bash 3075 Centos TXT Reg 253,0 1150704 428303/USR/BIN/BASH

Jak pokazuj pliki otwarte przez określonego użytkownika

Możemy również filtrować wyjście, aby pokazać pliki otwarte przez określonego użytkownika. Robimy to za pomocą flagi -u, a następnie nazwy użytkownika jako:

sudo lsof -u centos

To da ci wyjście, jak pokazano poniżej:

Jak wyświetlać pliki otwarte przez określony proces

Załóżmy, że chcemy wyświetlić wszystkie pliki otwarte przez określony proces? W tym celu możemy użyć PID procesu do filtrowania wyjścia.

Na przykład poniższe polecenie pokazuje pliki otwarte przez Bash.

sudo lsof -p 3075

To da ci tylko pliki otwarte przez SystemD, jak pokazano:

Jak wyświetlać pliki otwarte w katalogu

Aby otworzyć pliki w określonym katalogu, możemy przekazać opcję +D, a następnie ścieżkę katalogu.

Na przykład wymieniaj otwarte pliki w katalogu /etc.

sudo lsof +d /etc

Poniżej znajduje się wyjście:

Jak pokazać połączenie sieciowe

Ponieważ wszystko w systemie Linux to plik, możemy uzyskać pliki sieciowe, takie jak pliki lub połączenia TCP.

Możemy użyć polecenia:

sudo lsof -i tcp

To da ci połączenia TCP w systemie.

Możesz także filtrować według określonego portu za pomocą polecenia pokazanego poniżej:

sudo lsof -i: 22

To da ci wyjście, jak pokazano poniżej:

Jak ciągle wyświetlać pliki

LSOF zapewnia nam tryb do zapętlania wyjścia co kilka sekund. Pozwala to na ciągłe monitorowanie plików otwartych przez proces lub użytkownik.

Ta opcja wymaga jednak ręcznego zakończenia procesu.

Na przykład poniższe polecenie stale monitoruje pliki otwarte na porcie 22:

sudo lsof -r -i: 22

Jak widać, w trzeciej pętli LSOF łapie ustalone połączenie z serwerem na SSH.

Wniosek

LSOF to niezwykle przydatne narzędzie. Umożliwia monitorowanie plików krytycznych, a także monitorowanie użytkowników i przetwarza pliki otwierające. Może to być niezwykle przydatne podczas rozwiązywania problemów lub szukania złośliwych prób systemu.

Jak pokazano w tym samouczku, przy użyciu różnych przykładów i metod, możesz połączyć funkcjonalność dostarczoną przez narzędzie LSOF do niestandardowego monitorowania.

Dziękuję za przeczytanie i udostępnienie! Mam nadzieję, że nauczyłeś się czegoś nowego!