GNU/Linux >> Znalost Linux >  >> Linux

18 rychlých příkladů příkazů „lsof“ pro Linux Geeks

lsof je nástroj příkazového řádku pro všechny operační systémy Unix a Linux, který kontroluje „seznam otevřených souborů Název „lsof“ je sám odvozen od této funkce. Příkaz lsof se používá hlavně k načtení informací o souborech, které jsou otevřeny různými procesy. Otevřené soubory v systému mohou být různého typu, jako jsou soubory na disku, síťové zásuvky, pojmenované kanály a zařízení. Tato charakteristická funkce umožňuje ladit a lépe porozumět operačnímu systému Linux.

Když provedeme minimální instalaci CentOS / RHEL / Ubuntu / OpenSUSE , lsof není součástí výchozí instalace, takže k instalaci příkazu nebo nástroje lsof použijte následující příkaz

Pro systém CentOS / RHEL

~] # yum nainstalovat lsof -y

Systémy založené na Debianu (Ubuntu / Linux Mint)

~] # apt install lsof -y

Pro systém OpenSUSE

~] # instalace lsof pomocí zypper

Příkaz „lsof“ je vybaven mnoha možnostmi a přepínači. Bude velmi zajímavé prozkoumat některé z těchto důležitých. V tomto článku probereme 18 užitečných příkladů příkazů lsof pro linuxové geeky.

Příklad:1) Seznam všech otevřených souborů vašeho systému (lsof)

Spuštění příkazu lsof bez jakýchkoli voleb zobrazí seznam všech otevřených souborů vašeho systému, které patří všem aktivním procesům.

Pouhým zadáním příkazu „lsof“ bez jakýchkoli voleb na příkazovém řádku získáte následující výstup,

Poznámka :- Protože výstup lsof poskytuje mnoho informací STDOUT, bude lepší použít roura „|“ operaci zobrazíte tento výstup stránku po stránce.

[[e-mail chráněn] ~]# lsof | MoreCommand PID TID Uživatel FD Typ Velikost zařízení/OFF NADEMYSYD 1 kořen CWD dir 253,0 4096 128/Systemd 1 Root RTD dir 253,0 4096 128/Systemd 1 kořenový txt reg 253,0 1489960 50674818/lib/systemd/ SystemdSystemd 1 Root Mem Reg 253,0 20032 33628284 /usr/lib64/libuuid.so.1.3.0systemd 1 root mem reg 253,0 252704 33745961 /usr/lib64/libblkid.so.1.1.0 

Pokud pozorně prozkoumáte, výše uvedený výstup příkazu poskytuje mnoho informací s mnoha parametry. Například zpracujte „systemd ” (což je proces démona) má ID procesu (PID ) z „1“, uživatel je „root “, deskriptor souboru (FD ) jako „cwd “ a atd. FD přichází s mnoha hodnotami, protože je známo, že deskriptor souboru je generován pro všechny otevřené soubory automaticky v systémech Linux. Níže jsou uvedeny některé ze známých hodnot „FD“ používaných pro příkazy lsof,

Poznámka :V některých případech za „mem“ následuje číslo a různé znaky jako „r“, „u“, „w“ atd. Tyto znaky jsou „r“ pro čtení, „w“ pro zápis, „u“ pro čtení a pište.

Nakonec „TYPE ” ve výstupu příkazu označuje typ souboru. Níže jsou uvedeny standardní typy souborů v systémech Linux.

Další pole, která jsou zobrazena spolu s tímto, jsou následující,

  • ZAŘÍZENÍ –> ID zařízení
  • VELIKOST/VYPNUTO –> Skutečná velikost tohoto procesu (pořízená během běhu)
  • NODE –> Typicky číslo inodu adresáře nebo nadřazeného adresáře
  • NAME –> Cesta nebo odkaz

Příklad:2) Seznam otevřených souborů určitého systému souborů (/proc)

Jak víte, „/proc ” bude existovat pouze po dobu životnosti operačního systému Linux, tento adresář obsahuje mnoho důležitých informací souvisejících s procesem. Spuštění „lsof“ na /proc nám poskytne zajímavý výstup k prozkoumání,

[Pre> [[Ochrana e -mailu] ~]# LSOF /ProcCommand PID Uživatel FD typu Velikost zařízení /OFF NAMESYSTEMD 1 Root 9r Reg 0,3 0 6690 /Proc /1 /MountInfoSystemd 1 Root 11r reg 0,3 0 4026532018 /Proc /Proc /swapssystemd-j 462 root 10r reg 0,3 0 6936/proc/sys/jádro/hostitelsnof 5186 kořen 3r dir 0,3 0 1/proclsof 5186 root 6r dir 0,3 0 28890/proc/5186/fd [[[E-mail chráněno] ~]#

Jak již bylo zmíněno dříve, zde je zachyceno „lsof“ nebo „lsof“ a jsou zobrazeny všechny podrobnosti. Kromě „lsof“ existují další procesy jako systemd a rsyslogd, což jsou démoni používané pro účely swap, připojení atd.

Podobně můžeme vypsat otevřené soubory jiného souborového systému jako /var/log,

[[email protected] ~]# lsof /var/log/

Příkaz lsof je velmi užitečný v situaci, kdy příkaz df a du ukazuje různé využití disku stejného souborového systému, pomocí příkazu lsof můžeme najít soubory, které byly odstraněny, když byly otevřeny a použity nějakým procesem,

[[e-mail chráněný] ~]# lsof /var/log | grep -i "smazáno"

Výše uvedený příkaz vám dá pid souborů, které byly odstraněny, ale stále existují v systému ve stavu smazaných. Takže, abychom uvolnili prostor ze souborového systému, můžeme proces bezpečně zabít jeho pid.

Příklad:3) Seznam otevřených souborů pro příkaz „lsof“

„lsof“ sám o sobě vyvolá chybovou zprávu,

[[email protected] ~]# lsof lsoflsof:stavová chyba na lsof:Žádný takový soubor nebo adresář 4.87

Příklad:4) Seznam otevřených souborů pro uživatele (lsof -u )

„lsof“ lze použít pro všechny uživatele, kteří se přihlásili do systému Linux. V tomto případě „lsof“ zobrazí všechny otevřené soubory příslušného uživatele.

Seznam všech otevřených souborů pro uživatele root

[[e-mail chráněný] ~]# kořenový adresář lsof -u | MoreCommand PID Uživatel FD Typ Velikost zařízení/OFF NADE NAMESystemd 1 Root CWD dir 253,0 4096 128/Systemd 1 Root RTD dir 253,0 4096 128/Systemd 1 Root TXT REG 253,0 1620416 51034677/Usr/Systemd/SystemdSystemD 1 root mem reg 253,0 20032 33628284 /usr/lib64/libuuid.so.1.3.0systemd 1 root mem reg 253,0 252704 33745961 /usr/lib64/libblkid.so.1.1.0systemd 1 root reg 253,0 90632 33628275 /usr/lib64/libz.so.1.2.7Systemd 1 Root Mem Reg 253,0 153192 33618596 /usr/lib64/liblzma.so.5.0.99Systemd 1 Root Reg 253,0 19888 33656455/usr/libttr. tak.1.1.0………………………………………………………………

Seznam otevřených souborů pro uživatele bez oprávnění root, podívejme se na všechny otevřené soubory pro uživatele linuxtechi,

[[e-mail chráněný] ~]# lsof -u linuxtechi  | moreNebo[[e-mail chráněný] ~]# lsof -l -u linuxtechi | více
 Příkaz PID Uživatel FD typu Velikost zařízení /OFF NODE NAMESSHD 2657 Linuxtech CWD DIR 253,0 4096 128 /SSHD 2657 Linuxtech Rtd DIR 253,0 4096 128 /SSHD 2657 Linuxetech txt Reg 253,0 815520 34698340 /SSR /SBIN / SSHDSSHD 2657 Linuxtech del reg 0,4 23850/dev/Zerosshd 2657 Linuxtech mem reg 253,0 15472 33831639 /usr/lib64/security/pam_lastlog.Sosshd 2657 linUxTechi mem 253,0 68192 33628305 /sr.z -rogbr.zr.zr.zí. 1.0.6sshd 2657 linuxtechi mem REG 253,0 153.192 33618596 /usr/lib64/liblzma.so.5.0.99sshd 2657 linuxtechi mem REG 253,0 91496 33628319 /usr/lib64/libelf-0.163.sosftp-serv 2661 linuxtechi mem REG 253 ,0     14608 33618582 /usr/lib64/libutil-2.17.sosftp-serv 2661 linuxtechi  mem    REG              253,0     61856 33863972 /usr/lib64/liblber-2.4.so.2.10.3SFTP-SERV 2661 Linuxtech Mem Reg 253,0 344224 33863974 /usr/lib64/libldap-2.4.so.2. 33618298 /usr/lib64/libdl-2.17.Sosftp-Serv 2661 Linuxtech Mem Reg 253,0 2516624 33657314 /usr/lib64/libcrypto.so.1.0.2ksftp-Serv 2661 LINUXTetech. LD-2.17.SOSFTP-SERV 2661 LINUXTECHI 0R FIFO 0,8 0T0 24046 PIPESFTP-SERV 2661 Linuxtech 1W FIFO 0,8 0T0 24047 PIPESFTP-SERV 2661 LINUXTECHI 2W FIFO 0,8 0T0 /home/linuxtechi………………………………………………………………………………

Chcete-li zobrazit všechny otevřené soubory kromě uživatele root, použijte ^(symbol stříšky) před uživatele root ( lsof -u ^root),

[[e-mail chráněný] ~]# lsof -u ^root | MoreCommand PID TID Uživatel FD Typ Velikost zařízení /OFF NODE NAMEBUSBUS-DAEM 1662 DBUS CWD DIR 253,0 4096 128 /DBUS-DAEM 1662 DBUS DIR 253,0 4096 128 /DBUS-DAEM 1662 DBUS TXT 253,0 441176 171333333 / USR/BIN/DBUS-DAEMONDBUS-DAEM 1662 DBUS MEM REG 253,0 57824 33618566 /USR/LIB64/LIBNSS_FILES-2.17.SODBUS-DAEM 1662 DBUS REG 253,0 19512 33618298 /USR/LIB64/LIBDHDD-2.S17.SODBUS--2.17.SODBUS--2.17.SODBUS--2.1.1.12.1.12.17.S17.S17.S17.S17.S17.S17.S17.S17.SODBDST-DAEM. DEEM 1662 DBUS MEM REG 253,0 398272 33628261 /USR/LIB64/LIBPCRE.SO.1.2.0DBUS-DAEM 1662 DBUS Mem Reg 253,0 2107816 33618292 /USR/LIB64/LIBC-2.17.SOK …………………………………………………………………………………………………

Příklad:5) Seznam všech otevřených souborů internetových domén a domén UNIX (lsof -i -U)

Použijte volbu „-i -U“ v příkazu lsof k zobrazení seznamu všech otevřených souborů internetu a domén UNIX ve vašem systému, příklad je uveden níže

[Pre> [[Ochrana e -mailu] ~]# LSOF -I -I -ICOMMAND PID Uživatel FD typu Velikost zařízení/OFF NADESystemd 1 Root 12U UNIX 0XFFF8800B8BAAB40 0T0 11075/RUN/SYSTEMD/CGROUPS -AGETSYDSYD 1U UNIX 0XFF8800B8BAB2C0 0T0 11077/RUN/RUNS/RUNS /Systemd/PrivateSystemd 1 Root 42U IPv4 16576 0T0 TCP *:SUNRPC (poslouchat) Systemd 1 Root 43u IPV4 16577 0T0 UDP *:Sunrpcrpcbind 1633330CT0CTCn.SOCCRUN/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/Run/RUN/RUN PRO *:sunrpc (POSLOUCHEJTE) rpcbind 1633 rpc 5u IPv4 16577 0t0 UDP *:sunrpcrpcbind 1633 RPC 6U IPv6 16578 0t0 TCP *:sunrpc (POSLOUCHEJTE) rpcbind 1633 rpc 7U IPv6 16579 0t0 UDP *:sunrpcrpcbind 1633 RPC 10u IPv4 16649 0t0 UDP *:960 sshd      2532     Root 3U IPv4 21120 0T0 TCP 192.168.1.6:SSH ->192.168.1.5:65110 (zavedeno) SSHD 2532 root 4u unix 0xffff8800bbef3a40 0t0 2120020Fd60 0tst0298000022998000229980000229980T60022998. IPv4              21191      0t0   TCP 192.168.1.6:ssh->192.168.1.5:65112 (ZASTAVENO) sshd       2536         2536    20 0 root …………………………………………………………

Příklad:6) Seznam všech otevřených síťových souborů IPv4 (lsof -i 4)

Použijte volbu "-i -4" v příkazu lsof k zobrazení seznamu všech otevřených síťových souborů pro IPv4,

[Pre> [[Ochrana e -mailu] ~]# LSOF -I 4COMMAND PID Uživatel FD TYPE VELIKOST/OFF NADE NAMESystemd 1 Root 42U IPV4 16576 0T0 TCP *:SUNRPC (Poslouchejte) Systemd 1 Root 43U IPV4 16577 0T0 UDP *:Sunrpcrpcbind 1633 RPC 4U IPV4 16576 0T0 TCP *:SUNRPC (poslouchat) SSHD 2258 Kořen 3u IPv4 19493 0T0 TCP *:SSH (poslouchal) Master 2360 Root 13U IPv4 20087 0T0 TCP localhost:Smtp (poslouchat) dhclient 2494 root 6u IPv4 20983 0t0 udp *::Smtp (poslouchejte) bootpcdhclient 2494 root 20u ipv4 20951 0t0 udp *:24884dhclient 2514 root 6u ipv4 20866 0t0 udp *:bootpcsshd 2532 root 3u IPv4 21120 0t0 tcp 192.168.1.6:192.168.1.5:251111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110 (root 322.168.  TCP 192.168.1.6:ssh->192.168.1.5:65112 (STABLISHED)sshd     2621       root    3u  IPv4  23506      0t0 TCP 192.6159 612.615 AB 612.616 AB Root 3U IPv4 23863 0T0 TCP 192.168.1.6:SSH ->192.168.1.9:49992 (zavedeno) SSHD 2657 Linuxtech 3u IPv4 23795 0T0 TCP 192.168.1.6:SSH ->192.168.1.9:4990 (založeno) 0t0  TCP 192.168.1.6:ssh->192.168.1.9:49992 (ZALOŽENO)[[e-mail chráněn] ~]#

Chcete-li zobrazit seznam všech otevřených síťových souborů IPv4 používaných konkrétním procesem, jehož proces id „any_number“, příklady jsou uvedeny níže

Předpokládejme, že chceme vypsat všechny síťové soubory IPv4 pro proces rpcbind

Syntaxe: # lsof i 4 -a -p {process_pid}

[[email protected] ~]# lsof -i 4 -a  -p 1633COMMAND  PID UŽIVATELE   FD   TYP VELIKOST ZAŘÍZENÍ/VYP. NÁZEV UZLU rpcbind 1633  rpc    4u  IPv4  16576  3  rpsun 16576  3  rpsun 16576   3  rpsun 16576   3  rpsun 4 * 0 6 UDP *:sunrpcrpcbind 1633  rpc   10u  IPv4  16649      0t0  UDP *:960[[e-mail chráněný] ~]#

Příklad:7) Vypsat všechny otevřené síťové soubory pro IPv6 (lsof -i 6)

Za předpokladu, že je podporována doména ipv6, výstup lsof bude něco jako níže,

[Pre> [[Ochrana e -mailu] ~]# LSOF -I 6COMMAND PID Uživatel FD TYPE VELIKOST/OFF NADE NAMESystemd 1 Root 44U IPV6 16578 0T0 TCP *:SUNRPC (Poslouchejte) Systemd 1 Root 46U IPV6 16579 0T0 UDP *:Sunrpcrpcbind 1633 RPC 6U IPV6 16578 0T0 TCP *:SunRPC (poslouchat) RPCBIND 1633 RPC 7U IPV6 16579 0T0 UDP *:Sunrpcrpcbind 1633 RPC 11U IPV6 16650 0T0 UDP *:960SSHD 2258 Root 4U IPV6 19504 0T0 TCS SHETIME *:SSHES. IPv6 20088 0T0 TCP Localhost:SMTP (poslouchat) dhclient 2494 Root 21U IPv6 20952 0T0 UDP *:16498DHClient 2514 Root 21U IPv6 20823 0T0 UDP *:34955HT30 420 TRYTU (Http (Http (Http (Http (Http (Http (Http (Http (Http (http (Http (http) 0t0  TCP *:http (LISTEN)httpd    2596 apache    4u  IPv6  22703      0t0  TCP *:http (POSLECHNUTÍ)httpd    2597 apache    4u  IPv6  a  4 IPv6  22703 7 TCP http2 EN 22703 d 0 EN 2 03      0t0  TCP *:http (POSLECHNUTÍ)httpd    2599 apache    4u  IPv6  22703      0t0  TCP *:http (LISTEN)[[e-mail chráněný] ~]#

Příklad:8) Vypsat všechny procesy TCP a UDP běžící na konkrétním portu (lsof -i TCP/UDP:port)

Předpokládejme, že chceme vypsat všechny procesy TCP běžící na portu 80, použijte níže uvedený příkaz

[[email protected] ~]# lsof -i TCP:80COMMAND  PID   UŽIVATEL   FD   TYP VELIKOST ZAŘÍZENÍ/VYPNUTÝ NÁZEV UZLUhttpd   2594   root    4u  IPv6  22703       0t4 0 2 TCP 2 TCP 5 http          http (poslech) httpd 2596 apache 4u ipv6 22703 0t0 tcp *:http (poslech) httpd 2597 apache 4u ipv6 22703 0t0 tcp *:http (poslouchejte) httpd 2598 apache 4u ipv6 22703 0t0 tcp *:httd) IPv6  22703      0t0  TCP *:http (LISTEN)[[e-mail chráněný] ~]#

Chcete-li zobrazit seznam všech otevřených souborů na portu TCP z rozsahu portů (1 až 1048), použijte následující příkaz

[Pre> [[Ochránce e -mailů] ~]# LSOF -I TCP:1-1048COMMAND PID Uživatel FD TYPE VELIKOST VELIKOSTI/OFF NADESYSYSTD 1 Root 41U IPv4 16863 0T0 TCP *:Sunrpc (Poslouchejte) Systemd 1 Root 44U IPV6 16865 0T0 TCP *:SUNRPC (poslouchat) RPCBIND 1663 RPC 4U IPV4 16863 0T0 TCP *:SUNRPC (Poslouchejte) RPCBind 1663 RPC 6U IPv6 16865 0T0 TCP *:SUNRPC (poslouchat) Sshd 2294 Root 3u IPV4 19949 0T0 Root 4u IPv6 19965 0T0 TCP *:SSH (Poslouchejte) Master 2433 Root 13u IPv4 21026 0T0 TCP localhost:SMTP (poslouchejte) Master 2433 Root 14u IPv6 21027 0T0 TCP localhost:SMTP (poslouchat) Sshd 2600 Root 3U IPV4 21737. 1.3:SSH-> 192.168.1.9:52393 (zavedeno) SSHD 2659 Root 3U IPv4 22056 0T0 TCP 192.168.1.3:SSH->192.168.1.9:52486 (zavedený) Sshd 2663 Root 3U IVV4 22123 0T0 TCP 192.168.1.1.3:52486 SSHD>192.168.1.9 :52489 (zavedeno) httpd 2837 kořen 4u IPv6 26112 0t0 TCP *:http (poslouchejte) httpd 2838 apache 4u ipv6 26112 0t0 tcp *:http (poslouchejte) httpd 2839 apache 4U ipv6 26112 0t0 tcp *:httd aache) 4U IPV6 26112 0T0 TCP *:HTTP (poslouchejte) httpd 2841 apache 4u IPv6 26112 0t0 TCP *:http (poslouchejte) httpd 2842 apache 4u IPv6 26112 0t0 tcp *:http (poslouchejte) sshd 2891 root 3U ipv4 26816666.1.10 tcp *::ssh->192.168.1.9:53541 (STABLISHED)sshd    2895 linuxtechi    3u  IPv4  26896      0t0 ) TCP 192.168.1.3:ssh->[8emailSHLIED 192:ssh->[8.3159.1]

Chcete-li vypsat všechny procesy UDP běžící na konkrétním portu, použijte příkaz beneath

[[chráněno e-mailem] ~]# lsof -i UDP:16498COMMAND   PID UŽIVATELE   FD   TYP VELIKOST ZAŘÍZENÍ/VYPNUTÝ NÁZEV UZLUdhclient 2494 root   21u  IPv6  20952    mail   0t04 # e-mailem    0t04 # chráněno UDP *: # 

Poznámka :Chcete-li zobrazit seznam všech otevřených procesů UDP na vašem linuxovém systému, použijte příkaz „lsof -i UDP

Příklad:9) Seznam všech otevřených souborů pro konkrétní zařízení (lsof )

Následující příkaz lze použít k zobrazení seznamu všech otevřených souborů na /dev/vda1.

Poznámka: V tomto případě je typ zařízení virtuální, obecně to může být typ /dev/hd<číslo>/ sd{číslo}

[e-mail chráněn] ~]# lsof  /dev/vda1 | MoreCommand PID Uživatel FD Typ Velikost zařízení /OFF NADE NAMESystemd 1 Root CWD dir 253,1 4096 2 /Systemd 1 kořen RTD dir 253,1 4096 2 /Systemd 1 Root Reg 253,1 1577264 262271 /Systemd /SystemdSystemd 1 Root mem REG 253,1 18976 262252 /lib/x86_64-linux-gnu/libuuid.so.1.3.0systemd 1 kořen mem REG 253,1 262408 262245 /lib/x86_64-linux-gnu/libblkid.so.1.1.0systemd 1 kořen Mem Reg 253,1 14608 266364 /lib/x86_64-linux-gnu/libdl-2.23.Sosystemd 1 kořenový mem reg 253,1 456632 262207 /lib/x86_64-linux-gnu/libpcre.so.3.13.2Systemd 1 253,1 1868984 266362 /lib/x86_64-linux-gnu/libc-2.23.Sosystemd 1 kořenový mem reg 253,1 138696 266361 /lib/x86_64-linux-gnu/libpthread-2.23.Sosystemd 1 kořen REG 253,1 286824 261756 /lib/x86_64-linux-gnu/libmount.so.1.1.0

Příklad:10) Seznam procesů s otevřenými soubory v systému souborů NFS

Existují situace, kdy jste na svůj linuxový box připojili souborový systém nfs, ale server nfs je nepřístupný a chcete vypsat všechny procesy s otevřenými soubory v tomto souborovém systému nfs,

[[email protected] ~]# lsof -b 

Příklad:11) Seznam otevřených souborů souvisejících s terminálem (lsof /dev/tty{číslo})

Následující příkaz se používá pro všechny otevřené soubory na /dev/tty1.

Poznámka :V tomto případě je typ terminálu „tty1“. Lze také použít jakýkoli jiný typ terminálu jako /dev/tty<číslo>

[[email protected] ~]# lsof /dev/tty1COMMAND  PID USER   FD   TYP VELIKOST ZAŘÍZENÍ/VYP. NÁZEV UZLUbash    2442 root    0u   CHR    4,1       4,1       4,1       4,1       4,1       4,1       4,1       0 t0/t /0    0t0/t /0    0t0/t /0    0t0 44689 / sh 1 /tty1bash    2442 root    2u   CHR    4,1      0t0 4689 /dev/tty1bash    2442 root  255u   CHR    4,1       0t0 4689 #[e-mail 0t0/4689] 

Příklad:12) Vypsat PID, název příkazu, deskriptor souboru, číslo zařízení a číslo inodu souboru (lsof -FpcfDi)

Jedna ze zajímavých možností v „lsof“ pro získání výstupu pole PID(P) a názvu příkazu(c) pro každý proces, deskriptor souboru (f), číslo zařízení souboru (D) a číslo inodu souboru (i) pro každý soubor každého procesu, příklad je uveden níže

[[e-mail chráněný] ~]# lsof -FpcfDi | morep1csystemdfcwdD0xfd00i128frtdD0xfd00i128ftxtD0xfd00i51034677fmemD0xfd00i33628284………………

Poznámka: Zobrazí se dlouhý seznam výstupů, ale tento je z důvodu úspory místa zkrácen.

Příklad:13) Seznam všech síťových připojení (lsof -i)

Použijte volbu „-i“ v příkazu lsof k zobrazení seznamu všech procesů nebo příkazů souvisejících se sítí, příklad je uveden níže,

[Pre> [[Ochrana e -mailu] ~]# LSOF -ICOMMAND PID Uživatel FD typu Velikost zařízení/OFF NADESystemd 1 Root 41U IPv4 16863 0T0 TCP *:SUNRPC (Smaen) Systemd 1 Root 43u IPV4 16864 0T0 UDP *:SUNRPCPCBIND 1663 RPC 4U IPv4 16863 0T0 TCP *:SunRPC (poslouchat) RPCBIND 1663 RPC 5U IPV4 16864 0T0 UDP *:Sunrpcrpcbind 1663 RPC 11U IPV6 17051 0T0 UDP *:988SSHD 2294 Root 3u IPV4 19949 0T0 THSP *:SSHS (SSHS) 19965 0T0 TCP *:SSH (poslouchejte) RPC.STATD 2300 RPCUSER 10U IPV6 19974 0T0 UDP *:48486RPC.STATD 2300 RPCUSER 11U IPV6 20045 0T0 TCP *:39334 (Poslouchejte) RPC.Mount 2311110 Udp *19897 0T0 Udp *19 19897 0T0 Udp *:.mount 2311       root    8u  IPv4  19911      0t0  TCP *:mountd (LISTEN)master    2433       root   13u  IPv4  21026       master:1 Místní hostitel    EN 1          0t0 IP6 TC 1027 0T0 TCP localhost:SMTP (poslouchejte) dhclient 2563 Root 6u IPv4 21589 0T0 UDP *:Bootpcdhclient 2583 Root 21U IPv6 21365 0T0 UDP *:10368SSHD 2600 3U IPV4 21737 0T0 ESTABLISHED)sshd      2659       root    3u  IPv4  22056      0t0  TCP 192.168.1.3:ssh->192.168.1.9:52486 (ESTABLISHED) #[E-mail preprotected)]

Příklad:14) Najděte soubor IPv4 /IPv6 Socket

Chcete-li najít soubor soketu IPv4, použijte níže uvedený příkaz, nahraďte IP adresu vaší systémovou IP

[[chráněno e-mailem] ~]# lsof [chráněno e-mailem] PID PŘÍKAZU        UŽIVATEL   FD   TYP VELIKOST ZAŘÍZENÍ/VYPNUTÝ NÁZEV UZLU sshd    2600        root    3u  IPv4  21737.919 23.6. 2659 Root 3U IPv4 22056 0T0 TCP 192.168.1.3:SSH ->192.168.1.9:52486 (zavedeno) SSHD 2663 Root 3U IPv4 22123 0T0 TCP 192.168.1.3:SSH ->192.168.1.9:52489 (založeno) 25004 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52848 (navázáno) sshd 2728 linuxtechi 3u IPv4 25004 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52848 (navázáno) [[email protected] ~] #  

Chcete-li najít soubor soketu IP verze 6 podle přidružené číselné adresy ve tvaru dvojtečky, která obsahuje řadu nul – např. adresa zpětné smyčky (127.0.0.1), použijte níže uvedený příkaz a možnosti:

[[chráněno e-mailem] ~]# lsof [chráněno e-mailem][::1]PŘÍKAZ  PID UŽIVATEL   FD   TYP VELIKOST ZAŘÍZENÍ/VYPNUTÝ UZEL JMÉNOmaster  2433 root   14u  IPv6  21027      0t0 p TCP localhost:s m ~]#

Příklad:15) Vypsat všechny procesy nebo příkazy, které patří k ID procesu (lsof -p )

Předpokládejme, že chceme vypsat všechny procesy nebo příkazy, které patří ke konkrétnímu ID procesu, příklad je uveden níže

[[e-mail chráněn] ~]# lsof -p 2842 | moreCOMMAND PID USER FD typ zařízení SIZE / OFF NODE NAMEhttpd 2842 apache cwd DIR 253,0 4096 128 / httpd 2842 apache rtd DIR 253,0 4096 128 / httpd 2842 apache txt REG 253,0 523.680 34641136 / usr / sbin / httpdhttpd 2842 apache MEM REG 253,0 110808 33618576 /USR/LIB64/LIBRESOLV-2.17.SOHTTPD 2842 APACHE REG 253,0 27512 33618564 /USR/LIB64/LIBNSS_DNS-2. libnss_files-2.17.sohttpd 2842 apache mem reg 253,0 27808 17080385 /usr/lib64/httpd/modules/mod_cgi.sohttpd 2842 apache reg 253,0 68192 33628305 /usr/lib64/libbzbzbzbzbzbzbzí2.s1.1.s1.01.s14.0.6.srs.1s.1.01.01.Sols.S14.0 68192 33628305. ………………………………………

Příklad:16) Zabijte všechny procesy, které patří konkrétnímu uživateli

Příkaz lsof se stává velmi užitečným tam, kde chceme zabít veškerý proces, který patří konkrétnímu uživateli, níže uvedený příklad zabije všechny procesy, které patří uživateli linuxtechi

[[e-mail chráněný] ~]# zabití -9 `lsof -t -u linuxtechi`[[e-mail chráněný] ~]#

Příklad:17) Seznam všech otevřených souborů v konkrétním adresáři (lsod +D )

Předpokládejme, že chceme vypsat všechny otevřené soubory v adresáři /var/log, pak použijeme následující příkaz lsof,

[[email protected] ~]# lsof +D /var/log/COMMAND    PID   UŽIVATEL   FD   TYP VELIKOST/VYPNUTÍ ZAŘÍZENÍ     NÁZEV UZLUauditd    1635   root    4w   REG  253,02 a104117dit Root 3W reg 253,0 240 392280 /var/log/wpa_supplicant.Logtuned 2295 Root 3W reg 253,0 6000 17713597 /var/log/tuned/tuned.logryslogd 2296 root 6w reg 253,0 7118 392279/var/cronrSysLogd/cronrSysLogd/cronrSysLogd/cronrSogdd/cronrSysLogd/cronrSogdd/cronrSysLogd/cronrSysLogd/cronrSogdd/cronrSogdd/cronrSogdd/cronrSogdd/cronrslogd. 2296 Root 7W reg 253,0 449328 338975/var/log/messagesrsyslogd 2296 kořen 8w reg 253,0 26038 338976/var/log/securSysyslogd 2296 root 9W reg 253,0 1576 338977/var/log/log/log/log/log/log/log/log/log/logd 2296 2296 2296 2296 2296 2296 2296 2296 2296 2296 2296 2296 2296 2296 2296 2296 2296 2296 ROOGD , 0 9458 138 /var/log/boot.loghttpd 2837 Root 2W reg 253,0 2829 34768157/var/log/httpd/errog_loghttpd 2837 kořen 7W reg 253,0 0 34824416/var/log/httpd/přístupový 253,0     2829 34768157 /var/log/httpd/error_loghttpd     2838 ap AChE 7W REG 253,0 0 34824416 / var / log / httpd / access_loghttpd 2839 Apache 2w REG 253,0 2829 34768157 / var / log / httpd / error_loghttpd 2839 Apache 7w REG 253,0 0 34824416 / var / log / httpd / access_loghttpd 2840 apache    2w   REG  253,0     2829 34768157 /var/log/httpd/error_loghttpd     2840 apache    7w   REG  253,0        0 34824416 /var/log/httpd/access_loghttpd     2841 apache    2w   REG  253,0     2829 34768157 /var/log/httpd/ error_loghttpd     2841 apache    7w   REG  253,0        0 34824416 /var/log/httpd/access_loghttpd     2842 apache    2w   REG  253,0     2829 34768157 /var/log/httpd/error_loghttpd     2842 apache    7w   REG  253,0        0 34824416 /var/log/httpd /access_log[[email protected] ~]#

Poznámka: In above command if we use +D option then lsof will list all open files of a directory recursively and if you don’t want to list open files of directory recursively then use “+d” option

Example:18) “lsof” to check who opened the log file (to find PID)

The following command option is used to find who opened the /var/log/httpd/access.log file and what is the PID of that process. And then with “ps -ef” command we can find exact user

[[email protected] ~]# lsof -t /var/log/httpd/access_log310931103111311231133114[[email protected] ~]#[[email protected] ~]# ps -ef | grep -E "3109|3110|3111|3112|3113|3114" | grep -v grepor[[email protected] ~]# ps -fp "$(lsof -t /var/log/httpd/access_log | xargs echo)"root      3109     1  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUNDapache    3110  3109  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUNDapache    3111  3109  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUNDapache    3112  3109  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUNDapache    3113  3109  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUNDapache    3114  3109  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND[[email protected] ~]#

Many options of the “lsof” command can be combined for multiple purposes as below are some combination of flags “-c”, “-u” and “-I”. For more details refer the manual page.

Přečtěte si také :11 Xargs Command Examples in Linux

The below command combination will give output every 1 second about “linuxtechi” home directory what all the files opened repeatedly.

[email protected] ~}# lsof -u linuxtechi -c init -a -r1=======COMMAND   PID       USER   FD   TYPE DEVICE SIZE/OFF    NODE NAMEinita.sh 2971 linuxtechi  cwd    DIR    8,1     4096  393218 /home/linuxtechiinita.sh 2971 linuxtechi  rtd    DIR    8,1     4096       2 /inita.sh 2971 linuxtechi  txt    REG    8,1    83344  524367 /bin/dashinita.sh 2971 linuxtechi  mem    REG    8,1  1434567 1443695 /lib/i386-linux-gnu/libc-2.13.so……………………………………………………………………………

Conclusion:

As mentioned in the introduction section “lsof” is very powerful and useful command in Linux based distributions. This command and options listed can be used for various purposes like debugging, troubleshooting and triaging Linux processes. Mentioned options and combinations if tried, will help one to establish thorough understanding of “lsof” command. Other commands like lstat , stat and ls also can be explored in combination of “lsof” command.

Přečtěte si takéHow to Enable Timestamp in Linux History Command Output


Linux
  1. 8 Příklady příkazů rychlého data v Linuxu

  2. Linux killall příkaz pro začátečníky (8 příkladů)

  3. 7 Příklady příkazu lsof v Linuxu

  1. 16 Příklady příkazů Quick Cat v Linuxu

  2. 12 Příklady IP příkazů pro uživatele Linuxu

  3. Linuxový příkaz dir pro začátečníky (10 příkladů)

  1. Příkaz Linux rm vysvětlený pro začátečníky (8 příkladů)

  2. Linux ln Command Tutorial pro začátečníky (5 příkladů)

  3. Linux nl Command Tutorial pro začátečníky (7 příkladů)