Wspaniałą rzeczą w Linuksie jest to, że możesz łatwo przeglądać i zarządzać wszystkim, od procesu uruchamiania po instalowanie pakietów oprogramowania. Tutaj omawiamy, w jaki sposób można użyć polecenia lsof w systemie Linux, aby wyświetlić otwarte pliki i procesy, które z nich korzystają. Wiedza, jak to zobaczyć, może pomóc Ci zrozumieć, jak działa system, a nawet podjąć niezbędne działania dla określonych procesów.
Polecenie Lsof
Do przeglądania otwartych plików i odpowiedzialnych za nie użytkowników lub procesów używamy lsof
pożytek. Domyślny, lsof
jest preinstalowany w większości dystrybucji.
Jeśli jednak nie masz go zainstalowanego, możesz użyć menedżera pakietów, aby zainstalować go w swoim systemie.
Debian/Ubuntu
W Debianie uruchom polecenie:
sudo apt-get install lsof
Łuk / Manjaro
W Manjaro i innych dystrybucjach opartych na Arch, użyj pacmana, uruchamiając polecenie:
CentOS / REHL / Fedora
W przypadku CentOS i rodziny REHL możesz użyć dnf:
Użyj polecenia lsof, aby wyświetlić listę otwartych plików dla procesu Linuksa
Podobnie jak większość poleceń Linuksa, narzędzie lsof jest niezwykle łatwe w użyciu. Zacznij od wpisania polecenia lsof
:
Po uruchomieniu powyższego polecenia lsof powinien zwrócić informacje o otwartych plikach w systemie.
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,48 4096 2 / init 1 root rtd DIR 8,48 4096 2 / init 1 root txt REG ,19 632048 281474976743906 /init init 1 root 0u CHR 1,3 0t0 15362 /dev/null init 1 root 1u CHR 1,3 0t0 15362 /dev/null init 1 root 2u CHR 1,3 0t0 15362 /dev/null init 1 root 3w CHR 1,11 0t0 15367 /dev/kmsg init 1 root 4u sock ,8 0t0 22689 protocol: AF_VSOCK init 1 root 5r REG ,4 4026532185 mnt init 1 root 6r REG ,4 4026532201 mnt init 1 root 7r DIR 8,48 4096 240 /home/cap init 1 root 8u DIR 8,48 4096 2 / init 1 root 9u sock ,8 0t0 21853 protocol: AF_VSOCK
Notatka: jeśli masz uprawnienia sudo, uruchom polecenie z sudo
aby uniknąć błędów „odmowa uprawnień” w określonych plikach.
Jak pokazano na powyższym wyjściu, wyjście lsof ma następujące kolumny:
Kolumna | Reprezentacja |
---|---|
wysyłam | Wyświetla nazwę procesu, którego używa plik docelowy. |
PID | Unikalny identyfikator procesu korzystającego z pliku. |
TID | Kolumna pokazuje identyfikator wątku. |
ZADANIECMD | Nazwa polecenia zadania. |
NAZWA UŻYTKOWNIKA | Nazwa użytkownika lub UID użytkownika uruchamiającego proces. |
FD | Deskryptor pliku i tryby. |
PISZE | Węzeł powiązany z plikiem docelowym. |
URZĄDZENIE | Numer urządzenia oddzielony przecinkami. |
ROZMIAR / WYŁ | Rozmiar pliku w bajtach rozmiaru przesunięcia pliku |
WĘZEŁ | Wartość i-węzła pliku lokalnego. Możesz użyć polecenia stat do wyświetlenia inode informacje o pliku. |
NAZWA | Punkt montowania pliku. |
Teraz, gdy rozumiesz, co reprezentuje zawartość drukowania polecenia lsof, użyjmy go do odfiltrowania określonych informacji.
Jak filtrować według określonych procesów
Aby filtrować tylko określone pliki otwierane przez określony proces, możemy użyć nazwy procesu lub wartości PID.
Na przykład, aby wyświetlić pliki używane przez proces Firefox, możemy użyć polecenia:

Polecenie wyświetli wszystkie pliki otwarte przez proces Firefox.
Aby filtrować według identyfikatora procesu, możemy użyć -p
opcji i przekaż identyfikator procesu. Możesz użyć top
polecenie, aby uzyskać identyfikator procesu docelowego.
Na przykład, aby uzyskać PID procesu Firefox, możemy użyć polecenia:
sudo ps aux | grep firefox
Gdy masz PID procesu docelowego, użyj lsof, aby wyświetlić otwarte pliki:

Powyższe polecenie spowoduje wydrukowanie plików otwartych przez proces z określonym PID.
Jak filtrować według określonego użytkownika
Aby zobaczyć tylko pliki otwarte przez określonego użytkownika, możemy użyć -u
flaga. Na przykład, aby filtrować według użytkownika Debiana, użyj polecenia:

Jak filtrować według określonego pliku
Załóżmy, że chcesz tylko poznać proces i użytkownika, który otworzył określony plik. Aby to zrobić, przekaż nazwę pliku do lsof:

Powyższe spowoduje filtrowanie tylko określonego pliku i zwrócenie powiązanych informacji, w tym użytkownika, identyfikatora procesu i innych.
Kończący się
W tym prostym samouczku omawiamy, jak przeszukiwać system w celu uzyskania informacji o otwartych plikach za pomocą polecenia lsof w systemie Linux. Oto kilka dodatkowych poleceń umożliwiających wyświetlenie zawartości katalogu w terminalu.
.
Czy ten artykuł jest przydatny?