lsof è un'utilità della riga di comando per tutti i sistemi operativi simili a Unix e Linux per controllare "elenco di file aperti Il nome “lsof” stesso deriva da questa funzionalità. Il comando lsof viene utilizzato principalmente per recuperare informazioni sui file aperti da vari processi. I file aperti in un sistema possono essere di tipo diverso, come file su disco, socket di rete, named pipe e dispositivi. Questa caratteristica distintiva consente di eseguire il debug e comprendere il sistema operativo Linux in un modo migliore.
Quando eseguiamo l'installazione minima di CentOS / RHEL / Ubuntu / OpenSUSE , lsof non fa parte dell'installazione predefinita, quindi usa il comando seguente per installare il comando o l'utilità lsof
Per il sistema CentOS/RHEL
~] # yum install lsof -y
Sistemi basati su Debian (Ubuntu/Linux Mint)
~] # apt install lsof -y
Per il sistema OpenSUSE,
~] # zypper install lsof
Il comando "lsof" è dotato di molte opzioni e interruttori. Sarà molto interessante esplorare alcuni di questi importanti. In questo articolo discuteremo 18 utili esempi di comandi lsof per fanatici di Linux.
Esempio:1) Elenca tutti i file aperti del tuo sistema (lsof)
L'esecuzione del comando lsof senza alcuna opzione elencherà tutti i file aperti del tuo sistema che appartengono a tutti i processi attivi.
Digitando semplicemente il comando "lsof" senza alcuna opzione nella riga di comando si ottiene il seguente output,
Nota :- Poiché l'output di lsof fornisce molte informazioni a STDOUT, sarà meglio usare la pipe "|" operazione per vedere questo output pagina per pagina.
[[email protetta] ~]# lsof | MORECOMMAND PID TID User FD Tipo Tipo dispositivo Dimensioni / Off Nodo NomeSmested 1 radice CWD Dir 253,0 4096 128 / Systemd 1 root Rtd Dir 253,0 4096 128 / Systemd 1 root txt reg 253,0 1489960 50674818 / USR / LIB / Systemd / SystemDsystemd 1 Mem Mem 253,0 20032 33628284 /usr/lib64/libuuid.so.1.3.0systemd 1 Mem REG 253,0 252704 33745961 /usr/lib64/libblkid.so.1.1.0
L'output del comando precedente, se esaminato attentamente, fornisce molte informazioni con molti parametri. Ad esempio, elaborare "sistema ” (che è un processo daemon) ha ID processo (PID ) di “1”, Utente è “root “, Descrittore di file (FD ) come "cwd ” e così via. L'FD presenta molti valori, poiché si è consapevoli del fatto che il descrittore di file viene generato automaticamente per tutti i file aperti nei sistemi Linux. Di seguito sono riportati alcuni dei noti valori "FD" utilizzati per i comandi lsof,
Nota :In alcuni casi, la “mem” è seguita da un numero e da vari caratteri come “r”, “u”, “w” ecc. Questi caratteri sono “r” per read, “w” per write, “u” per read e scrivi.
Infine, il "TIPO ” nell'output del comando indica il tipo di file. I seguenti sono i tipi standard di file nei sistemi Linux.
Gli altri campi visualizzati insieme a questo sono i seguenti,
- DISPOSITIVO –> ID dispositivo
- TAGLIA/OFF –> Dimensioni effettive di questo processo (scattate durante il runtime)
- NODO –> Tipicamente numero inode della directory o directory principale
- NOME –> Percorso o collegamento
Esempio:2) Elenca i file aperti di un file system specifico (/proc)
Come saprai, "/proc ” esisterà solo durante la vita del sistema operativo Linux, questa directory contiene molte informazioni importanti relative al processo. L'esecuzione di "lsof" su /proc genererà un output interessante da esplorare,
[[e-mail protetta] ~] # lsof / proccommand PID utente tipo fd Tipo dispositivo dimensione / spegnimento nodo NomeSmested 1 radice 9R REG 0,3 0 6690 / Proc / 1 / MountInfosystemd 1 radice 11R REG 0,3 0 4026532018 / Proc / SwapsSystemd-J 462 Radice 10R Reg 0,3 0 6936 / Proc / Sys / Kernel / HostNesof 5186 Root 3R DIR 0,3 0 1 / Proclsof 5186 Root 6R DIR 0,3 0 28890 / Proc / 5186 / FD [[Email protetto] ~]#
Come accennato in precedenza, qui viene catturato "lsof" di "lsof" e vengono visualizzati tutti i dettagli. Oltre a "lsof" ci sono altri processi come systemd e rsyslogd che sono demoni usati per lo scambio, il montaggio, ecc.
Allo stesso modo, possiamo elencare i file aperti di un altro file system come /var/log,
[[email protetta] ~]# lsof /var/log/
Il comando lsof diventa molto utile in una situazione in cui il comando df e du mostra un diverso utilizzo del disco dello stesso file system, usando il comando lsof possiamo trovare i file che sono stati rimossi mentre venivano aperti e utilizzati da qualche processo,
[[email protetta] ~]# lsof /var/log | grep -i "cancellato"
Il comando sopra ti darà il pid dei file che sono stati eliminati ma sono ancora presenti nel sistema nello stato eliminato. Quindi, per liberare lo spazio dal file system possiamo tranquillamente uccidere il processo dal suo pid.
Esempio:3) Elenco di file aperti per il comando "lsof"
"lsof" genera un messaggio di errore su se stesso,
[[email protected] ~]# lsof lsoflsof:errore di stato su lsof:nessun file o directory di questo tipo lsof 4.87
Esempio:4) Elenco di file aperti per utenti (lsof -u )
"lsof" può essere utilizzato per tutti gli utenti che hanno effettuato l'accesso al sistema Linux. In questo caso “lsof” visualizzerà tutti i file aperti per il rispettivo utente.
Elenca tutti i file aperti per l'utente root
[[email protetta] ~]# lsof -u root | MORECOMMAND PID User FD Tipo dispositivo Dimensioni / Off Nodo NODEYSTEMD 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 / LIB / SYSTEDD / SYSTEMDSYSTEMD 1 Mem Reg 253.0 20032 33628284 /usr/lib64/libuuid.so.1.3.0systemd 1 Mem REG 253,0 252704 33745961 /usr/lib64/libblkid.so.1.0Systemd 1 Mem MEM 253,090632 33628275 /USR/lib64/libz.so.1.2.7Systemd 1 Mem REG 253,0 153192 33618596 /USR/lib64/liblzma.so.5.0.99sysystemd 1 Mem Mem 253,0 19888 33656455 / usr / lib64 / libottr. così.1.1.0……………………………………………………………
Elenco dei file aperti per utenti non root, vediamo tutti i file aperti per utenti linuxtechi,
[[email protetta] ~]# lsof -u linuxtechi | altroOppure[[email protetta] ~]# lsof -l -u linuxtechi | di più
Comando PID User FD Tipo Tipo dispositivo Dimensioni / Off Nodo NamlessHD 2657 Linuxtechi CWD DIR 253,0 4096 128 / sshd 2657 Linuxtechi RTD DIR 253,0 4096 128 / SSHD 2657 Linuxtechi TXT REG 253,0 815520 34698340 / usr / sbin / SSHDSSHD 2657 Linuxtechi del Reg 0,4 23850 / Dev / ZerossHD 2657 LinuxtHi MEM REG 253,0 15472 33831639 /usr/lib64/security/pam_lastlog.sosshd 2657 Linuxtechi mem 253,0 68192 33628305 /usr/lib64/libbz2.so. 1.0.6SSHD 2657 Linuxtechi MEM REG 253,0 153192 33618596 /USR/lib64/liblzma.so.5.0.99sshd 2657 LinuxtCechi MEM 253,0 91496 33628319 /usr/lib64/libelf-0.163.sosftp-erv 2661 LinuxtCechi MEM REG 253 ,0 14608 33618582 /usr/lib64/libutil-2.17.sosftp-serv 2661 linuxtechi mem REG 253,0 61856 33863972 /usr/lib64/liblibber-2.4.so.2.10.3sftp-serv 2661 LinuxtChi MEM 253,044224 33863974 /usr/lib64/libldap-2.4.so.2.10.3sftp-serv 2661 Linuxtechi MEM REG 253,0 19512 33618298 /USR/lib64/libdl-2.17.sosftp-2.17.sosftp-serv 2661 Linuxtechi Mem 253,0 2516624 33657314 /usr/lib64/libcrypto.so.1.0.2ksftp-serv 2661 LinuxtChi MEM REG 253,0 164432 33618285 / usr / lib64 / LD-2.17.SosFTP-Serv 2661 LinuxtxtiChi 0R FIFO 0,8 0T0 24046 PipesFTP-Serv 2661 LinuxtChi 1W FIFO 0,8 0T0 24047 PipesFTP-Serv 2661 LinuxtCechi 2W FIFO 0,8 0T0 24048 TEPO 2670 LINUXTECHI CWD DIR 253,0 79 17157147 /home/linuxtechi…………………………………………………………………………
Per elencare tutti i file aperti tranne l'utente root, usa ^(simbolo del cursore) davanti all'utente root ( lsof -u ^root),
[[email protetta] ~]# lsof -u ^root | MORECOMMAND PID TID User FD Tipo dispositivo Dimensioni / Off Nodo NamedBus-DAEM 1662 DBUS CWD DIR 253,0 4096 128 / DBUS-DAEM 1662 DBUS RTD Dir 253,0 4096 128 / DBUS-DAEM 1662 DBUS TXT REG 253,0 441176 17133533 / USR / BIN / DBUS-DAEMONDBUS-DAEM 1662 DBUS MEM REG 253,0 57824 33618566 /USR/lib64/libnsss_files-2.17.sodbus-daem 1662 DBUS MEM REG 253,0 19512 33618298 /USR/lib64/Libdl-2.17.Sodbus- DAEM 1662 DBUS MEM 253,0 398272 33628261 /USR/lib64/libpcre.so.1.2.0dbus-daem 1662 DBUS MEM 253,0 2107816 33618292 /USR/lib64/libc-2.17.so..................... ………………………………………………………………………………………………
Esempio:5) Elenca tutti i file di dominio Internet e UNIX aperti (lsof -i -U)
Usa l'opzione "-i -U" nel comando lsof per elencare tutti i file di dominio Internet e UNIX aperti sul tuo sistema, l'esempio è mostrato di seguito
[[E-mail protetta] ~] # lsof -i -i -ucommand Pid utente Tipo di tipo FD Dimensione / spegnimento Dimensioni / Off Nodo Namesystemd 1 Root 12u Unix 0xFFFF8800B8Bab40 0T0 11075 / Run / Systemd / CGroups-AgentSystemd 1 Root 13U Unix 0xFFFF8800B8Bab2C0 0T0 11077 / Run / Systemd / PrivateSystemd 1 Root 42U IPv4 16576 0T0 TCP *:SUNRPC (Ascolta) Systemd 1 Root 43U IPv4 16577 0T0 UDP *:SUNRPCRPCBIND 1633 RPC 3U UNIX 0xFFFF8800BAB8CF00 0T0 16574 /VAR/RUN/RPCBIND.Sockrpcbind 1633 RPC 4U IPv4 16576 0T0 TCP *:SUNRPC (ASSIST) RPCBIND 1633 RPC 5U IPv4 16577 0T0 UDP *:SUNRPCRPCIND 1633 RPC 6U IPv6 16578 0T0 TCP *:SUNRPC (ASCOLTA) RPCBIND 1633 RPC 7U IPv6 16579 0T0 UDP *:SUNRPCRPCIND 1633 RPC 10U IPv4 16649 0T0 UDP *:960sshd 2532 root 3U IPv4 21120 0T0 TCP 192.1120 0T0 TCP 192.168.1.6:Ssh->192.168.1.5:65110 (Fondata) SSHD 2532 Root 4U UNIX 0xFFFF8800BBEF3A40 0T0 21260 SOCKETSSHD 2532 Root 8U UNIX 0xFFFF8800B8AFD680 0T0 21298 /TMP/SSH-QHZ9BDTRVT/Agent.2532SSHD 2536 Radice 3U IPv4 21191 0T0 TCP 192.168.1.6:Ssh->192.168.1.5:65112 (Fondata) SSHD 2536 Root 4U UNIX 0xFFFF8800B8AFD2C0 0T0 21363 Presa ........................................................................................... ………………………………………………………
Esempio:6) Elenca tutti i file di rete IPv4 aperti (lsof -i 4)
Usa l'opzione "-i -4" nel comando lsof per elencare tutti i file di rete aperti per IPv4,
[[e-mail protetta] ~] # lsof -i 4Command PID utente tipo fd Tipo dispositivo dimensione / spegnimento NODE NomeSmested 1 radice 42U IPv4 16576 0T0 TCP *:SUNRPC (Ascolta) Systemd 1 Root 43U IPv4 16577 0T0 UDP *:SUNRPCRPCIND 1633 RPC 4U IPv4 16576 0T0 TCP *:SUNRPC (Ascolta) SSHD 2258 Root 3U IPv4 19493 0T0 TCP *:ssh (Ascolta) Master 2360 Root 13U IPv4 20087 0T0 TCP localhost:SMTP (Ascolta) DHClient 2494 Root 6U IPv4 20983 0T0 UDP *:bootpcdhclient 2494 Root 20U IPv4 20951 0T0 UDP *:24884dhclient 2514 radice 6u IPv4 20866 0T0 UDP *:bootpcssbap 2532 root 3U IPv4 21120 0T0 TCP 192.168.1.6:SH->1916.168.1.5:65110 (Fondata) SSHD 2536 Root 3U IPv4 21191 0T0 TCP 192.168.1.6:ssh->192.168.1.5:65112 (ESTABLISHED)sshd 2621 root 3u IPv4 23506 0t0 TCP 192.168.1.6:ssh->192.168.1.9:65422 (ESTA BL) sh sh Root 3U IPv4 23863 0T0 TCP 192.168.1.6:Ssh->192.168.1.9:4992.168.1.9:49992 (Fondata) SSHD 2657 LinuxtChi 3U IPv4 23795 0T0 TCP 192.168.1.6:SSH->192.168.1.9:49990 (Fondata) SSHD 2660 LinuxtChi 3U IPv4 23863 0t0 TCP 192.168.1.6:ssh->192.168.1.9:49992 (ESTABLISHED)[[email protected] ~]#
Per elencare tutti i file di rete IPv4 aperti utilizzati da un processo specifico il cui ID processo "any_number", gli esempi sono mostrati di seguito
Supponiamo di voler elencare tutti i file di rete IPv4 per il processo rpcbind
Sintassi : # lsof i 4 -a -p {process_pid}
[[email protected] ~]# lsof -i 4 -a -p 1633COMMAND PID USER FD TIPO DEVICE SIZE/OFF NODE NAMErpcbind 1633 rpc 4u IPv4 16576 0t0 TCP *:sunrpc (LISTEN)rpcbind 1633 r 0 50 IP UDP *:sunrpcrpcbind 1633 rpc 10u IPv4 16649 0t0 UDP *:960[[email protected] ~]#
Esempio:7) Elenca tutti i file di rete aperti per IPv6 (lsof -i 6)
Supponendo che il dominio ipv6 sia supportato, l'output di lsof sarà simile a quello riportato di seguito,
[[e-mail protetta] ~] # lsof -i 6Command PID utente tipo fd Tipo dispositivo dimensione / spegnimento nodo Namesystemd 1 root 44U IPv6 16578 0T0 TCP *:SUNRPC (Ascolta) Systemd 1 Radice 46U IPv6 16579 0T0 UDP *:SunRPCRPCIND 1633 RPC 6U IPv6 16578 0T0 TCP *:SUNRPC (Ascolta) RPCBIND 1633 RPC 7U IPv6 16579 0T0 UDP *:SUNRPCRPCIND 1633 RPC 11U IPv6 16650 0T0 UDP *:960SSHD 2258 Root 4U IPv6 19504 0T0 TCP *:SSH (Ascolta) Master 2360 Root 14U IPv6 20088 0T0 TCP LocalHost:SMTP (Ascolta) DhClient 2494 Root 21U IPv6 20952 0T0 UDP *:16498Dhclient 2514 Root 21U IPv6 20823 0T0 UDP *:34955HTPD 2594 Root 4U IPv6 22703 0T0 TCP *:HTTP (Ascolta) httpd 2595 Apache 4U IPv6 22703 0t0 TCP *:http (LISTEN)httpd 2596 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)httpd 2597 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)httpd 2598 apache IP 03 0t0 TCP *:http (LISTEN)httpd 2599 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)[[email protected] ~]#
Esempio:8) Elenca tutti i processi TCP e UDP in esecuzione su una porta specifica (lsof -i TCP/UDP:porta)
Supponiamo di voler elencare tutti i processi TCP in esecuzione su 80 porte, utilizzare il comando seguente
[[email protected] ~]# lsof -i TCP:80COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEhttpd 2594 root 4u IPv6 22703 0t0 TCP *:http (LISTEN)httpd 2595 apache * 4u IPv3 0t0 TCP *:http (LISTEN)httpd 2595 apache * 4u IPv3 227 http (Ascolta) httpd 2596 Apache 4U IPv6 22703 0T0 TCP *:HTTP (Ascolta) httpd 2597 Apache 4U IPv6 22703 0T0 TCP *:http (Ascolta) httpd 2598 Apache 4U IPv6 22703 0T0 TCP *:http (Ascolta) httpd 2599 Apache 4U IPv6 22703 0t0 TCP *:http (LISTEN)[[email protected] ~]#
Per elencare tutti i file aperti sulla porta TCP dall'intervallo di porte (da 1 a 1048), utilizzare il comando seguente
[[e-mail protetta] ~] # lsof -i tcp:1-1048Command PID utente tipo fd Tipo dispositivo dimensione / spegnimento NODE NomeSmested 1 radice 41U IPv4 16863 0T0 TCP *:SUNRPC (Ascolta) Systemd 1 Root 44U IPv6 16865 0T0 TCP *:SUNRPC (Ascolta) RPCBIND 1663 RPC 4U IPv4 16863 0T0 TCP *:SUNRPC (Ascolta) RPCBIND 1663 RPC 6U IPv6 16865 0T0 TCP *:SUNRPC (Ascolta) SSHD 2294 Root 3U IPv4 19949 0T0 TCP *:ssh (Ascolta) SSHD 2294 Root 4U IPv6 19965 0T0 TCP *:SSH (Ascolta) Master 2433 Root 13U IPv4 21026 0T0 TCP LocalHost:SMTP (Ascolta) Master 2433 Root 14U IPv6 21027 0T0 TCP LocalHost:SMTP (Ascolta) SSHD 2600 Root 3U IPv4 21737 0T0 TCP 192.168. 1.3:ssh-> 192.168.1.9:52393 (Fondata) SSHD 2659 Root 3U IPv4 22056 0T0 TCP 192.168.1.3:Ssh->192.168.1.9:52486 (Fondata) SSHD 2663 Root 3U IPv4 22123 0T0 TCP 192.168.1.3:SSH->192.168.1.9 :52489 (Fondata) httpd 2837 root 4U IPv6 26112 0T0 TCP *:http (Ascolta) httpd 2838 Apache 4U IPv6 26112 0T0 TCP *:http (Ascolta) httpd 2839 Apache 4U IPv6 26112 0T0 TCP *:http (Ascolta) httpd 2840 Apache 4U IPv6 26112 0T0 TCP *:HTTP (Ascolta) httpd 2841 Apache 4U IPv6 26112 0T0 TCP *:http (Ascolta) httpd 2842 Apache 4U IPv6 26112 0T0 TCP *:HTTP (Ascolta) SSHD 2891 Root 3U IPv4 26896 0T0 TCP 192.168.1.3 :ssh->192.168.1.9:53541 (ESTABLISHED)sshd 2895 linuxtechi 3u IPv4 26896 0t0 TCP 192.168.1.3:ssh->192.168.1.9:53541 (ESTABLISHED)[[email #protected] ~]Per elencare tutti i processi UDP in esecuzione su una porta specifica, utilizzare il comando sottostante
[[email protected] ~]# lsof -i UDP:16498COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEdhclient 2494 root 21u IPv6 20952 0t0 UDP *:16498[[email protected] ~]#Nota :Per elencare tutti i processi UDP aperti sul tuo sistema Linux, usa il comando "lsof -i UDP ”
Esempio:9) Elenca tutti i file aperti per un dispositivo specifico (lsof
) Il comando seguente può essere utilizzato per elencare tutti i file aperti su /dev/vda1.
Nota: In questo caso il tipo di dispositivo è virtuale, in genere può essere di tipo /dev/hd
/ sd{numero} [email protetta] ~]# lsof /dev/vda1 | MORECOMMAND PID User FD Tipo di tipo Dimensione / spegnimento Nodo NomeSmested 1 root cwd dir 253,1 4096 2 / Systemd 1 root Rtd Dir 253,1 4096 2 / Systemd 1 root txt reg 253,1 1577264 262271 / lib / systemd / systemdsystemd 1 radice Mem Reg 253,1 18976 262252 /Lib/x86_64-linux-gnu/libuuid.so.1.3.0systemd 1 Mem REG 253,1 262408 262245 /Lib/x86_64-linux-gnu/libblkid.so.1.1.0systemd 1 radice MEM 253,1 14608 266364 /Lib/x86_64-linux-GNU/Libdl-2.23.Sosystemd 1 Mem REG 253,1 456632 262207 /Lib/x86_64-linux-gnu/libpcre.so.3.13.2systemd 1 Mem Mem Reg 253,1 1868984 266362 /Lib/x86_64-Lib/X86_64-Linux-GNU/libc-2.23.Sosystemd 1 Mem REG 253,1 138696 266361 /Lib/x86_64-linux-GNU/Libpthread-2.23.Sosystead 1 Mem Mem Reg 253,186824 261756 /lib/x86_64-linux-gnu/libmount.so.1.1.0Esempio:10) Elenca i processi con file aperti su file system NFS
Ci sono alcune situazioni in cui hai montato il file system nfs sulla tua macchina Linux ma il server nfs è inaccessibile e vuoi elencare tutti i processi con i file aperti su quel file system nfs,
[[email protetta] ~]# lsof -bEsempio:11) Elenca i file aperti relativi al terminale (lsof /dev/tty{number})
Il comando seguente viene utilizzato per tutti i file aperti su /dev/tty1.
Nota :In questo caso il tipo di terminale è “tty1”. È possibile utilizzare anche qualsiasi altro tipo di terminale come /dev/tty
[[email protected] ~]# lsof /dev/tty1COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEbash 2442 root 0u CHR 4,1 0t0 4689 /dev/tty1bash 2442 root 1u 0 4 0 9 4 /tty1bash 2442 root 2u CHR 4,1 0t0 4689 /dev/tty1bash 2442 root 255u CHR 4,1 0t0 4689 /dev/tty1[[email protected] ~]#Esempio:12) Elenco PID, Nome comando, Descrittore file, Numero dispositivo e Numero inode file (lsof -FpcfDi)
Una delle opzioni interessanti in "lsof" per ottenere l'output del campo PID(P) e nome comando(c) per ogni processo, descrittore file (f), numero dispositivo file (D) e numero inode file(i) per ogni file di ogni processo, l'esempio è mostrato di seguito
[[email protetta] ~]# lsof -FpcfDi | morep1csystemdfcwdD0xfd00i128frtdD0xfd00i128ftxtD0xfd00i51034677fmemD0xfd00i33628284………………Nota: Viene visualizzato un lungo elenco di output, ma questo viene abbreviato per risparmiare spazio.
Esempio:13) Elenca tutte le connessioni di rete (lsof -i)
Usa l'opzione "-i" nel comando lsof per elencare tutti i processi o i comandi relativi alla rete, l'esempio è mostrato di seguito,
[[e-mail protetta] ~] # lsof -icommand PID utente tipo fd Tipo dispositivo dimensione / spegnimento nodo Namesystemd 1 radice 41u IPv4 16863 0T0 TCP *:SUNRPC (Ascolta) Systemd 1 Root 43U IPv4 16864 0T0 UDP *:SUNRPCRPCIND 1663 RPC 4U IPv4 16863 0T0 TCP *:SUNRPC (Ascolta) RPCBIND 1663 RPC 5U IPv4 16864 0T0 UDP *:SUNRPCRPCIND 1663 RPC 11U IPv6 17051 0T0 UDP *:988SSHD 2294 Root 3U IPv4 19949 0T0 TCP *:SSH (Ascolta) SSHD 2294 Root 4U IPv6 19965 0T0 TCP *:SSH (ASSIST) RPC.STATD 2300 RPCUSER 10U IPv6 19974 0T0 UDP *:48486RPC.STATD 2300 RPCUSER 11U IPv6 20045 0T0 TCP *:39334 (Ascolta) RPC.Mount 2311 Root 7U IPv4 19897 0T0 UDP *:MountDRPC .mount 2311 root 8u IPv4 19911 0t0 TCP *:mountd (LISTEN)master 2433 root 13u IPv4 21026 0t0 TCP localhost:smtp (LISTEN)master 2433 6 14 1027 0T0 TCP localhost:SMTP (ASCOLLE) DHCLENT 2563 Root 6U IPv4 21589 0T0 UDP *:bootpcdhclient 2583 root 21u IPv6 21365 0T0 UDP *:10368SSHD 2600 Radice 3U IPv4 21737 0T0 TCP 192.168.1.3:SH->192.168.1.9:52393 ( ESTABLISHED)sshd 2659 root 3u IPv4 22056 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52486 (ESTABLISHED)[[email protected] ~]#Esempio:14) Trova file socket IPv4 /IPv6
Per trovare il file socket IPv4, utilizza il comando seguente, sostituisci l'indirizzo IP con l'IP del tuo sistema
[[email protected] ~]# lsof [email protected]COMMAND PID USER FD TIPO DEVICE SIZE/OFF NODE NAMEsshd 2600 root 3u IPv4 21737 0t0 TCP 192.168.1.3:ssh23sh->192..1 2659 Root 3U IPv4 22056 0T0 TCP 192.168.1.3:Ssh->192.168.1.9:52486 (Fondata) SSHD 2663 Root 3U IPv4 22123 0T0 TCP 192.168.1.3:Ssh->192.168.1.9:52489 (Fondata) SSHD 2724 Root 3U IPv4 25004 0T0 TCP 192.168.1.3:Ssh->192.168.1.9:528.168.1.9:52848 (Fondata) SSHD 2728 LinuxtECHI 3U IPv4 25004 0T0 TCP 192.168.1.3:Ssh->192.168.1.9:52848 (Fondata) [[Email protetta] ~] #Per trovare un file socket IP versione 6 in base a un indirizzo numerico a forma di due punti associato che contiene una sequenza di zeri, ad esempio l'indirizzo di loopback (127.0.0.1) utilizzare il comando e le opzioni seguenti:
[[email protected] ~]# lsof [email protected][::1]COMMAND PID USER FD TIPO DEVICE SIZE/OFF NODE NAMEmaster 2433 root 14u IPv6 21027 0t0 TCP localhost:smtp (LISTEN)[[email protected] ~]#Esempio:15) Elenca tutti i processi o i comandi che appartengono a un ID processo (lsof -p
) Supponiamo di voler elencare tutti i processi o i comandi che appartengono a un ID processo specifico, l'esempio è mostrato di seguito
[[email protetta] ~]# lsof -p 2842 | MORECOMMAND PID utente tipo fd Dimensione / spegnimento NODE NODE NomeHttpd 2842 Apache CWD Dir 253,0 4096 128 / httpd 2842 Apache Rtd Dir 253,0 4096 128 / httpd 2842 Apache TXT REG 253,0 523680 34641136 / usr / sbin / httpdhttpd 2842 Apache Mem Reg 253,0 110808 33618576 /USR/lib64/Libresolv-2.17.sohttpd 2842 Apache Mem 253,0 27512 33618564 /usr/lib64/libnss_dns-2.17.sohttpd 2842 Apache Mem Reg 253,0 57824 33618566 / usr / lib64 / usr / liber libnsss_files-2.17.sohttpd 2842 Apache MEM REG 253,0 27808 17080385 /USR/Lib64/HTPD/Modules/Mod_CGI.sohttpd 2842 Apache Mem 253,0 68192 33628305 /USR/lib64/Libbz2.so.1.0.6......... …………………………………………Esempio:16) Termina tutti i processi che appartengono a un utente specifico
Il comando lsof diventa molto utile dove vogliamo uccidere tutto il processo che appartiene a un utente specifico, l'esempio seguente ucciderà tutti i processi che appartengono all'utente linuxtechi
[[email protetta] ~]# kill -9 `lsof -t -u linuxtechi`[[email protetta] ~]#Esempio:17) Elenca tutti i file aperti in una directory specifica (lsod +D
) Supponiamo di voler elencare tutti i file aperti nella directory /var/log, quindi utilizzare il seguente comando lsof,
[[email protected] ~]# lsof +D /var/log/COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEauditd 1635 root 4w REG 253,0 1177238 51031316 /var/log/audit/audit.logwpa_suppl 1840 Radice 3W Reg 253,0 240 392280 /var/log/WPA_Supply.Logtun 2005 Radice 3W REG 253,0 6000 17713597 /var/log/Tuned/tuned.logrsyslogd 2296 Root 6w Reg 253,0 7118 392279 / var / log / cronsyslogd 2296 Radice 7W Reg 253,0 449328 338975 / Var / Log / MessageSrsysyslogd 2296 Radice 8W REG 253,0 26038 338976 / var / log / securersysyslogd 2296 radice 9w Reg 253,0 1576 338977 / var / log / maillorogrsyslogd 2296 radice 10w Reg 253 , 0 9458 138 /var/log/boot.loghttpd 2837 radice 2w Reg 253,0 2829 34768157 / var / log / httpd / error_loghttpd 2837 root 7w reg 253,0 0 34824416 / var / log / httpd / access_loghttpd 2838 Apache 2w reg 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] ~]#Nota: 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.
Leggi anche :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 e ls also can be explored in combination of “lsof” command.
Leggi anche : How to Enable Timestamp in Linux History Command Output