GNU/Linux >> Tutoriales Linux >  >> Linux

18 ejemplos rápidos de comandos 'lsof' para Linux Geeks

lsof es una utilidad de línea de comandos para todos los sistemas operativos similares a Unix y Linux para verificar la "lista de archivos abiertos El nombre "lsof" se deriva de esta funcionalidad. El comando lsof se usa principalmente para recuperar información sobre archivos que varios procesos abren. Los archivos abiertos en un sistema pueden ser de diferentes tipos, como archivos de disco, sockets de red, canalizaciones con nombre y dispositivos. Esta característica distintiva permite depurar y comprender mejor el sistema operativo Linux.

Cuando hacemos la instalación mínima de CentOS / RHEL / Ubuntu / OpenSUSE , lsof no es parte de la instalación predeterminada, así que use el siguiente comando para instalar el comando o la utilidad lsof

Para el sistema CentOS/RHEL,

~] # yum instalar lsof -y

Sistemas basados ​​en Debian (Ubuntu/Linux Mint)

~] # apt install lsof -y

Para el sistema OpenSUSE,

~] # zypper instalar lsof

El comando “lsof” viene equipado con muchas opciones e interruptores. Será muy interesante explorar algunos de estos importantes. En este artículo, discutiremos 18 ejemplos útiles de comandos lsof para los geeks de Linux.

Ejemplo:1) Enumere todos los archivos abiertos de su sistema (lsof)

Ejecutar el comando lsof sin ninguna opción enumerará todos los archivos abiertos de su sistema que pertenecen a todos los procesos activos.

Simplemente escribiendo el comando "lsof" sin ninguna opción en la línea de comando da el siguiente resultado,

Nota :- Dado que la salida de lsof brinda mucha información a STDOUT, será mejor usar la tubería "|" operación para ver esta salida página por página.

[[correo electrónico protegido] ~]# lsof | Morecommand pid tid user fd Tipo de dispositivo Tamaño del dispositivo/desactivación Nodo NodeSystemd 1 Root CWD DIR 253,0 4096 128/Systemd 1 Root RTD Dir 253,0 4096 128/Systemd 1 REOT TXT REG 253,0 1489960 50674818/USR/Lib/Systemd/Systemd/Systemd/Systemd/Systemd/ SystemDSystemd 1 Root MEM REG 253,0 20032 33628284 /usr/lib64/libuuuid.so.1.3.0Systemd 1 Root MEM REG 253,0 252704 33745961 /usr/lib64/libblkid.so.1.0 

El resultado del comando anterior, si lo examina detenidamente, proporciona mucha información con muchos parámetros. Por ejemplo, procesa “systemd ” (que es un proceso daemon) tiene un ID de proceso (PID ) de “1”, el usuario es “root “, Descriptor de archivo (FD ) como “cwd ” y etc. El FD presenta muchos valores, ya que uno es consciente de que el Descriptor de archivo se genera automáticamente para cualquier archivo abierto en los sistemas Linux. A continuación se muestran algunos de los valores "FD" conocidos que se utilizan para los comandos lsof,

Nota :En algunos casos, el "mem" va seguido de un número y varios caracteres como "r", "u", "w", etc. Estos caracteres son "r" para leer, "w" para escribir, "u" para leer y escribe.

Finalmente, el "TIPO ” en la salida del comando indica el tipo de archivo. Los siguientes son los tipos estándar de archivos en los sistemas Linux.

Los otros campos que se muestran junto con este son los siguientes,

  • DISPOSITIVO –> Identificación del dispositivo
  • TALLA/NO –> Tamaño real de este proceso (tomado durante el tiempo de ejecución)
  • NODO –> Por lo general, número de inodo del directorio o directorio principal
  • NOMBRE –> Ruta o enlace

Ejemplo:2) Lista de archivos abiertos de un sistema de archivos específico (/proc)

Como sabe, el "/proc ” existirá solo durante la vida útil del sistema operativo Linux, este directorio contiene mucha información importante relacionada con el proceso. Ejecutar "lsof" en /proc arrojará resultados interesantes para que los exploremos,

 [[correo electrónico protegido] ~]# lSOF /Proccommand PID user fd Tipo de dispositivo Tamaño del dispositivo /apagado Node NodeSystemd 1 Root 9R Reg 0,3 0 6690 /Proc /1 /MountInfosystemd 1 Root 11R Reg 0,3 0 4026532018 /Proc /SwapsSystemd-J 462 Root 10r Reg 0,3 0 6936/Proc/Sys/Kernel/Hostnamelsof 5186 Root 3r Dir 0,3 0 1/ProclSof 5186 Root 6r Dir 0,3 0 28890/Proc/5186/FD [[Correo electrónico protegido] ~]#

Como se mencionó anteriormente, "lsof" de "lsof" en sí mismo se captura aquí y se muestran todos los detalles. Además de "lsof", existen otros procesos como systemd y rsyslogd, que son demonios que se utilizan para fines de intercambio, montaje, etc.

De manera similar, podemos listar archivos abiertos de otro sistema de archivos como /var/log,

[[correo electrónico protegido] ~]# lsof /var/log/

El comando lsof se vuelve muy útil en una situación en la que los comandos df y du muestran diferentes usos del disco del mismo sistema de archivos, usando el comando lsof podemos encontrar archivos que se eliminaron mientras estaban abiertos y utilizados por algún proceso,

[[correo electrónico protegido] ~]# lsof /var/log | grep -i "eliminado"

El comando anterior le dará el pid de los archivos que se eliminaron pero que aún existen en el sistema en estado eliminado. Entonces, para liberar el espacio del sistema de archivos, podemos eliminar el proceso de manera segura mediante su pid.

Ejemplo:3) Lista de archivos abiertos para el comando "lsof"

"lsof" en sí mismo arroja un mensaje de error,

[[email protected] ~]# lsof lsoflsof:error de estado en lsof:No existe tal archivo o directoriolsof 4.87

Ejemplo:4) Lista de archivos abiertos para usuarios (lsof -u )

“lsof” se puede utilizar para todos los usuarios que hayan iniciado sesión en el sistema Linux. En este caso, "lsof" mostrará todos los archivos abiertos para el usuario respectivo.

Lista de todos los archivos abiertos para el usuario root

[[email protected] ~]# lsof -u root | Morecommand PID User User FD Tipo de dispositivo Tamaño del dispositivo/desactivado Nodos 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/LIB/Systemd/SystemdSystemd 1 raíz MEM reg 253,0 20032 33628284 /usr/lib64/libuuid.so.1.3.0Systemd 1 raíz MEM reg 253,0 252704 33745961 /usr/lib64/libblkid.so.1.1.0 sistemt 1 raíz reg 253,0 906322222 33628275 /usr/lib64/libz.so.1.2.7Systemd 1 raíz MEM reg 253,0 153192 33618596 /usr/lib64/liblzma.so.5.0.99systemd 1 raíz Reg 253,0 19888 33656455/usr/lib64/libattr. so.1.1.0………………………………………………………………

Lista de archivos abiertos para usuarios no root, veamos todos los archivos abiertos para usuarios de linuxtechi,

[[email protected] ~]# lsof -u linuxtechi  | moreOr[[email protected] ~]# lsof -l -u linuxtechi | más
 comando PID user user fd tamaño de dispositivo /nodo de apagado namesshd 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 / /sbin / SSHDSSHD 2657 Linuxtechi del Reg 0,4 23850/dev/zerosshd 2657 Linuxtechi MEM reg 253,0 15472 33831639 /usr/lib64/security/pam_loastlog.sosshd 2657 Linuxtechi Mem Reg 253,0 68192 33628305 1.0.6sshd 2657 Linuxtechi Mem Reg 253,0 153192 33618596 /usr/lib64/liblzzma.5s. ,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. 33618298 /usr/lib64/libdl-2.17.sosftp-serv 2661 Linuxtechi Mem reg 253,0 2516624 33657314 /usr/lib64/libcrypto.so.1.0.2ksftp-servuxtechi mem. ld-2.17.sosftp-serv 2661 Linuxtechi 0R FIFO 0,8 0T0 24046 Pipesftp-Serv 2661 Linuxtechi 1W FIFO 0,8 0T0 24047 Pipesftp-Serv 2661 Linuxtechi 2W FIFO 0,8 0T0 24048 PipeBash 2670 Linuxtechi CWD Dir. /inicio/linuxtechi………………………………………………………………………………

Para listar todos los archivos abiertos excepto el usuario root, use ^(símbolo de intercalación) delante del usuario root ( lsof -u ^root),

[[email protected] ~]# lsof -u ^root | Morecommand pid tid user fd Tipo de dispositivo Tamaño del dispositivo /Nodo de apagado CamedBus-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/libnss_files-2.17.sodbusdaem 1662 dbus mem reg 253,0 19512 33618298 /usr/lib644/libdl-17.17. DAEM 1662 DBUS MEM REG 253,0 398272 33628261 /usr/lib64/libpcre.so.1.2.0dbusdaem 1662 DBUS MEM REG 253,0 2107816 33618292 /usr/LIB64/LIBC-2.17.SO ................. …………………………………………………………………………………………………

Ejemplo:5) Enumere todos los archivos de dominio UNIX y de Internet abiertos (lsof -i -U)

Use la opción “-i -U” en el comando lsof para enumerar todos los archivos de dominio UNIX y de Internet abiertos en su sistema, el ejemplo se muestra a continuación

 [[correo electrónico protegido] ~]# lSOF -I -Ucommand PID user fd Tipo de dispositivo Tamaño/apagado Node NodeSystemd 1 root 12u Unix 0xffff8800b8Baab40 0T0 11075/run/systemd/cgroups -agentsystemd 1 root 13u unix 0xffff8800b8b8bab2c0 0t0 11077/run run run run /systemd/privatesystemd 1 root 42u ipv4 16576 0t0 tcp *:sunrpc (escucha) systemd 1 root 43u ipv4 16577 0t0 udp *:sunrpcrpcbind 1633 rpc 3u unix 0xffff8888cff00 0t0 16574 /var/run/rpcBinds *:sunrpc (ESCUCHAR) rPCBIND 1633 RPC 5u IPv4 16577 0T0 UDP *:sunrpcrpcbind 1633 RPC 6u IPv6 16578 0T0 TCP *:sunrpc (ESCUCHAR) rPCBIND 1633 RPC 7U IPv6 16579 0T0 UDP *:sunrpcrpcbind 1633 RPC 10u IPv4 16649 0T0 UDP *:960sshd      2532     Root 3U IPV4 21120 0T0 TCP 192.168.1.6:ssh->192.168.1.5:65110 (establecido) SSHD 2532 4U UNIX 0XFFFF8800BBEF3A40 0T0 21260 SocketSshd 2532 Root 8u Unix 0XFFFF8800B8AFD680 IPv4              21191      0t0   TCP 192.168.1.6:ssh->192.168.1.5:65112 (ESTABLECIDO)sshd      2536       raíz    4u  unix 0xffff8800b8afd2c0……3…………3…………3 0t ………………………………………………………

Ejemplo:6) Listar todos los archivos de red IPv4 abiertos (lsof -i 4)

Use la opción "-i -4" en el comando lsof para enumerar todos los archivos de red abiertos para IPv4,

 [[correo electrónico protegido] ~]# lSOF -i 4Command PID user fd Tipo de dispositivo Tamaño/apagado Node NodeSystemd 1 Root 42U IPV4 16576 0T0 TCP *:SUNRPC (Listen) Systemd 1 Root 43U IPV4 16577 0T0 UDP *:SUNRPCRPCBIND 1633333333333 RPC 4U IPV4 16576 0T0 TCP *:SUNRPC (Listen) SSHD 2258 Root 3U IPv4 19493 0T0 TCP *:SSH (Listen) Master 2360 Root 13u IPV4 20087 0T0 TCP LocalHost:SMTP (Listen) Dhclient 2494 Root 6U ip4 20983 0T0 UDP *:bootpcdhclient 2494 root 20u ipv4 20951 0t0 udp *:24884dhclient 2514 raíz 6u ipv4 20866 0t0 udp *:bootpcsshd 2532 root 3u ip4 21120 0t0 tcp 192.168.1.6:ssh->192.168.1.5:6110110 (establecido) TCP 192.168.1.6:ssh->192.168.1.5:65112 (ESTABLECIDO)sshd     2621       raíz    3u  IPv4  23506      0t0  TCP 192.168.1.6:ssh->192.168.1.9:654ED s d 6542) (ESTABLECIDO 5) Root 3U IPv4 23863 0T0 TCP 192.168.1.6:ssh->192.168.1.9:49992 (establecido) SSHD 2657 Linuxtechi 3U IPV4 23795 0T0 TCP 192.168.1.6:SSH->192.168.1.9:499990 (establecido) SSHD1) 2660 LINATIA SECHI). 0t0  TCP 192.168.1.6:ssh->192.168.1.9:49992 (ESTABLECIDO)[[email protected] ~]#

Para enumerar todos los archivos de red IPv4 abiertos utilizados por un proceso específico cuyo ID de proceso es "cualquier_número", se muestran ejemplos a continuación

Supongamos que queremos enumerar todos los archivos de red IPv4 para el proceso rpcbind

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

 [[correo electrónico protegido] ~]# lSOF -i 4 -A -P 1633Command PID User FD Tipo Tipo Tamaño del dispositivo/OFF Node NamerPCBind 1633 RPC 4U IPV4 16576 0T0 TCP *:SUNRPC (Listen) RPCBind 1633 RPC 5U IPV4 16577 0T0 UDP *:sunrpcrpcbind 1633  rpc   10u  IPv4  16649      0t0  UDP *:960[[email protected] ~]#

Ejemplo:7) Listar todos los archivos de red abiertos para IPv6 (lsof -i 6)

Suponiendo que se admita el dominio ipv6, la salida de lsof será similar a la siguiente,

 [[correo electrónico protegido] ~]# lSOF -i 6Command PID user fd Tipo de dispositivo Tamaño/apagado Node NodeSystemd 1 Root 44U IPV6 16578 0T0 TCP *:SUNRPC (Listen) Systemd 1 Root 46U IPV6 16579 0T0 UDP *:SUNRPCRPCBIND 16333333333333 RPC 6U IPV6 16578 0T0 TCP *:SUNRPC (Listen) RPCBind 1633 RPC 7U IPV6 16579 0T0 UDP *:SUNRPCRPCBIND 1633 RPC 11U IPV6 16650 0T0 UDP *:960SSHD 2258 Root 4U IPV6 19504 0T0 TCP *:SSH (SSH (SSH (SSH (SSH (SHI IPv6 20088 0T0 TCP Localhost:SMTP (Listen) Dhclient 2494 root 21U IPv6 20952 0t0 UDP *:16498DHClient 2514 root 21U IPV6 20823 0T0 UDP *:34955HTTPD 2594 Root 4u IPV6 22703 0T0 TCP *:0t0  TCP *:http (ESCUCHAR)httpd    2596 apache    4u  IPv6  22703      0t0  TCP *:http (ESCUCHAR)httpd    2597 apache    4u  IPv6  22703      0t0  TCP *:http (ESCUCHAR)httpd    2598 apache 6     4u22 03      0t0  TCP *:http (ESCUCHA)httpd    2599 apache    4u  IPv6  22703      0t0  TCP *:http (ESCUCHA)[[email protected] ~]#

Ejemplo:8) Enumere todos los procesos TCP y UDP que se ejecutan en un puerto específico (lsof -i TCP/UDP:puerto)

Supongamos que queremos enumerar todos los procesos TCP que se ejecutan en el puerto 80, use el siguiente comando

[[email protected] ~]# lsof -i TCP:80COMMAND  PID   USER   FD   TIPO TAMAÑO DEL DISPOSITIVO/NO NOMBRE DEL NODOhttpd   2594   root    4u  IPv6  22703      0t0  TCP *:http (LISTEN)httpd   2595 apache  0 :4u  TCP  3 0 227 http (ESCUCHAR) httpd 2596 apache 4u IPv6 22703 0T0 TCP *:http (ESCUCHAR) httpd 2597 apache 4u IPv6 22703 0T0 TCP *:http (ESCUCHAR) httpd 2598 apache 4u IPv6 22703 0T0 TCP *:http (ESCUCHAR) httpd 2599 apache 4u IPv6  22703      0t0  TCP *:http (ESCUCHAR)[[email protected] ~]#

Para listar todos los archivos abiertos en el puerto TCP desde el rango de puertos (1 a 1048), use el siguiente comando

 [[ELECTROMETO ELECTROMED] ~]# LSOF -I TCP:1-1048COMMAND PID User User FD Tipo Tipo de dispositivo/Nodo OFF NodeSystemd 1 Root 41U IPV4 16863 0T0 TCP *:SUNRPC (Listen) Systemd 1 Root 44U IPV6 16865 0T0 TCP *:SUNRPC (Listen) RPCBind 1663 RPC 4U IPV4 16863 0T0 TCP *:SUNRPC (Listen) RPCBind 1663 RPC 6U IPV6 16865 0T0 TCP *:SUNRPC (Listen) SSHD 2294 Root 3U IPV4 19949 0T0 TCP *:SSH (Listen) Root 4u IPv6 19965 0T0 TCP *:SSH (Listen) Master 2433 Root 13u IPv4 21026 0T0 TCP Localhost:SMTP (Listen) Master 2433 Root 14U IPV6 21027 0T0 TCP LocalHost:SMTP (Listen) SSHD 2600 Root 3U IPV4 21737 0T0 TCP 192.168. 1.3:SSH-> 192.168.1.9:52393 (establecido) SSHD 2659 Root 3U IPV4 22056 0T0 TCP 192.168.1.3:ssh->192.168.1.9:52486 (establecido) SSHD 266 Root 3U IPV4 22123 0T0 TCP 192.168.>192.168.1.9 :52489 (establecido) httpd 2837 root 4u ipv6 26112 0t0 tcp *:http (escuchar) httpd 2838 apache 4u ipv6 26112 0t0 tcp *:http (escuchar) httpd 2839 apache 4u ipv6 26112 0t0 tcp *:http (escuchar) 4U IPV6 26112 0T0 TCP *:http (escuchar) httpd 2841 apache 4u ipv6 26112 0t0 tcp *:http (httpd 2842 apache 4u ipv6 26112 0t0 tcp *:http (escuchar) sshd 2891 root 3u4 26896 0t0 tcp 192.168.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.3 :ssh->192.168.1.9:53541 (ESTABLECIDO)sshd    2895 linuxtechi    3u  IPv4  26896      0t0  TCP 192.168.1.3:ssh->192.168.1.9:53541 (ESTABLECIDO)[[correo electrónico protegido] ~]# 

Para enumerar todos los procesos UDP que se ejecutan en un puerto específico, use el siguiente comando

[[email protected] ~]# lsof -i UDP:16498COMMAND   PID USER   FD   TIPO TAMAÑO DEL DISPOSITIVO/OFF NODE NOMBREdhclient 2494 root   21u  IPv6  20952      0t0  UDP *:16498[[email protected] ~]#

Nota :Para enumerar todos los procesos UDP abiertos en su sistema Linux, utilice el comando “lsof -i UDP

Ejemplo:9) Enumere todos los archivos abiertos para un dispositivo específico (lsof )

El siguiente comando se puede usar para enumerar todos los archivos abiertos en /dev/vda1.

Nota: En este caso el tipo de dispositivo es virtual, en general este puede ser de tipo /dev/hd/ sd{number}

[correo electrónico protegido] ~]# lsof  /dev/vda1 | Morecommand PID User User FD Tipo de dispositivo Tamaño del dispositivo /Desactivado Nodo NodeSystemd 1 Root CWD DIR 253,1 4096 2 /Systemd 1 Root RTD DIR 253,1 4096 2 /Systemd 1 REOT TXT REG 253,1 157264 262271 /LIB /Systemd /SystemDSystemd 1 raíz Root 1 raíz MEM reg 253,1 18976 262252 /lib/x86_64-linux-gnu/libuuid.so.1.3.0Systemd 1 raíz MEM reg 253,1 262408 262245 /lib/x86_64-linux-gnu/libblkid.so.1.0systemd 1 raíz MEM reg 253,1 14608 266364 /lib/x86_64-linux-gnu/libdl-2.23.Sosystemd 1 raíz mem reg 253,1 456632 262207 /lib/x86_64-linux-gnu/libpcre.so.3.13.2Systemd 1 raíz Reg 253,1 1868984 266362 /lib/x86_64-linux-gnu/libc-2.23.sosystemd 1 raíz mem reg 253,1 138696 266361 /lib/x86_64-linux-gnu/libpThread-2.23.sosystemd 1 raíz Reg 253,1 286824 261756 /lib/x86_64-linux-gnu/libmount.so.1.1.0

Ejemplo:10) Lista de procesos con archivos abiertos en el sistema de archivos NFS

Hay algunas situaciones en las que ha montado el sistema de archivos nfs en su caja de Linux pero el servidor nfs es inaccesible y desea enumerar todos los procesos con archivos abiertos en ese sistema de archivos nfs,

[[email protected] ~]# lsof -b 

Ejemplo:11) Lista de archivos abiertos relacionados con el terminal (lsof /dev/tty{number})

El siguiente comando se usa para todos los archivos abiertos en /dev/tty1.

Nota :En este caso el tipo de terminal es “tty1”. También se puede usar cualquier otro tipo de terminal como /dev/tty

[[email protected] ~]# lsof /dev/tty1COMMAND  PID USER   FD   TIPO TAMAÑO DEL DISPOSITIVO/OFF NODE NAMEbash    2442 root    0u   CHR    4,1      0t0 4689 /dev/tty1bash    2442 root    1u    CHR 1    / /tty1bash    2442 root    2u   CHR    4,1      0t0 4689 /dev/tty1bash    2442 root  255u   CHR    4,1      0t0 4689 /dev/tty1[[email protected] ~]#

Ejemplo:12) Lista de PID, nombre de comando, descriptor de archivo, número de dispositivo y número de inodo de archivo (lsof -FpcfDi)

Una de las opciones interesantes en "lsof" para obtener la salida de campo PID (P) y nombre de comando (c) para cada proceso, descriptor de archivo (f), número de dispositivo de archivo (D) y número de inodo de archivo (i) para cada archivo de cada proceso, el ejemplo se muestra a continuación

[[email protected] ~]# lsof -FpcfDi | másp1csystemdfcwdD0xfd00i128frtdD0xfd00i128ftxtD0xfd00i51034677fmemD0xfd00i33628284………………

Nota: Se muestra una larga lista de resultados, pero se acorta para ahorrar espacio.

Ejemplo:13) Listar todas las conexiones de red (lsof -i)

Use la opción "-i" en el comando lsof para enumerar todos los procesos o comandos relacionados con la red, el ejemplo se muestra a continuación,

 [[correo electrónico protegido] ~]# lSOF -icommand PID user fd type tamaño de dispositivo/apagado de nodo NodeSystemd 1 root 41u ipv4 16863 0t0 tcp *:sunrpc (escuchar) systemd 1 root 43u ipv4 16864 0t0 UDP *:SUNRPCRPCBIND 1663 RPC 4U IPv4 16863 0T0 TCP *:SUNRPC (Listen) RPCBind 1663 RPC 5U IPV4 16864 0T0 UDP *:SUNRPCRPCBIND 1663 RPC 11U IPV6 17051 0T0 UDP *:988SSHD 2294 Root 3U IPV4 19949 0T0 Tcp *(SHUSH) 19965 0T0 TCP *:SSH (Listen) Rpc.Statd 2300 RPCuser 10U IPv6 19974 0T0 UDP *:48486RPC.STATD 2300 RPCUSER 11U IPV6 20045 0T0 TCP *:39334 (escuchar) .mount 2311       raíz    8u  IPv4  19911      0t0  TCP *:mountd (LISTEN)master    2433       root   13u  IPv4  21026      0t0  TCP localhost:smtp (LISTEN)master    2433          IPv 1 4u raíz 1027 0T0 TCP localhost:SMTP (ESCUCHAR) dhclient 2.563 raíz 6u IPv4 21589 0T0 UDP *:2.583 bootpcdhclient raíz 21u IPv6 21365 0T0 UDP *:2.600 10368sshd raíz 3u IPv4 TCP 21737 0T0 192.168.1.3:ssh->192.168.1.9:52393 ( ESTABLECIDO)sshd      2659       root    3u  IPv4  22056      0t0  TCP 192.168.1.3:ssh->192.168.1.9:52486 (ESTABLECIDO)[[correo electrónico protegido] ~]#

Ejemplo:14) Buscar archivo de socket IPv4/IPv6

Para encontrar el archivo de socket IPv4, use el siguiente comando, reemplace la dirección IP con la IP de su sistema

 [[correo electrónico protegido] ~]# lSOF [correo electrónico protegido] Comando PID user FD Tipo de dispositivo Tamaño/Off Node Namesshd 2600 Root 3U IPV4 21737 0T0 TCP 192.168.1.3:SSH->192.168.1.9:52393 (establecido) SSHD 2659 Root 3U IPV4 22056 0T0 TCP 192.168.1.3:SSH->192.168.1.9:52486 (establecido) SSHD 2663 Root 3U IPV4 22123 0T0 TCP 192.168.1.3:SSH->192.168.1.9:52489 (establecido) 25004 0T0 TCP 192.168.1.3:SSH->192.168.1.9:52848 (establecido) SSHD 2728 Linuxtechi 3U IPv4 25004 0T0 TCP 192.168.1.3:SSH->192.168.1.9:52848 (establecido) [Establecido] /pre> 

Para encontrar un archivo de socket IP versión 6 mediante una dirección numérica asociada en forma de dos puntos que tenga una secuencia de ceros, por ejemplo, la dirección de bucle invertido (127.0.0.1), use el siguiente comando y opciones:

[[email protected] ~]# lsof [email protected][::1]COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEmaster  2433 root   14u  IPv6  21027      0t0  TCP localhost:smtp (LISTEN)[[email protected] ~]#

Ejemplo:15) Enumere todos los procesos o comandos que pertenecen a un ID de proceso (lsof -p )

Supongamos que queremos enumerar todos los procesos o comandos que pertenecen a una identificación de proceso específica. El ejemplo se muestra a continuación

[[correo electrónico protegido] ~]# lsof -p 2842 | Morecommand PID User User FD Tipo de dispositivo Tamaño del dispositivo /Nodo apagado 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 523680 34641136 /USR /SBIN /HTTPDHTTT MEM Reg 253,0 110808 33618576 /usr/lib64/libresolv-2.17.sohttpd 2842 Apache MEM Reg 253,0 27512 33618564 /usr/lib64/libnss_dns-2.17.SoHttpd 2842 Apache Mem 2533,0 57824 libnss_files-2.17.sohttpd 2842 apache mem reg 253,0 27808 17080385 /usr/lib64/httpd/modules/mod_cgi.sohttpd 2842 apache mem 253,0 68192 33628305 /usr/lib6444/LibBZ2. …………………………………………

Ejemplo:16) Matar todos los procesos que pertenecen a un usuario específico

El comando lsof se vuelve muy útil cuando queremos eliminar todo el proceso que pertenece a un usuario específico, el siguiente ejemplo eliminará todo el proceso que pertenece al usuario de linuxtechi

[[correo electrónico protegido] ~]# kill -9 `lsof -t -u linuxtechi`[[correo electrónico protegido] ~]#

Ejemplo:17) Enumere todos los archivos abiertos en un directorio específico (lsod +D )

Supongamos que queremos enumerar todos los archivos abiertos en el directorio /var/log, luego use el siguiente comando lsof,

[[email protected] ~]# lsof +D /var/log/COMMAND    PID   USER   FD   TIPO TAMAÑO DEL DISPOSITIVO/OFF     NOMBRE DEL NODOauditd    1635   root    4w   REG  253,0  1177238 51031316 /var/log/pl/audit/audit.logwpa40 raíz 3w reg 253,0 240 392280 /var/log/wpa_supplicant.logtuned 2295 raíz 3w reg 253,0 6000 17713597 /var/log/tuned/tuned.logrsyslogd 2296 raíz 6w reg 253,0 7118 392279/var/log/cronrsy 2296 Root 7W Reg 253,0 449328 338975/var/log/MessagesrSysLogd 2296 root 8w reg 253,0 26038 338976/var/log/securesyslogd 2296 root 9W reg 253,0 1576 338977/var/log/maillogRsysLogd 2296 root 10wwwwwwwww , 0 9458 138 /var/log/boot.loghtttpd 2837 root 2w reg 253,0 2829 34768157/var/log/httpd/error_loghttpd 2837 raíz 7w reg 253,0 0 34824416/var/log/httpd/access_loghttpd 2833333338 338 APA 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 348244416/var/log/httpd/access 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.

Leer también :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.

Leer tambiénHow to Enable Timestamp in Linux History Command Output


Linux
  1. 8 ejemplos de comandos de fecha rápida en Linux

  2. 16 ejemplos de comandos Quick Cat en Linux

  3. 12 ejemplos de comandos IP para usuarios de Linux

  4. Comando killall de Linux para principiantes (8 ejemplos)

  5. 7 ejemplos del comando lsof en Linux

Comando de localización de Linux para principiantes (8 ejemplos)

16 ejemplos prácticos del comando Linux LS para principiantes

Comando mv de Linux explicado para principiantes (8 ejemplos)

Tutorial del comando lsof de Linux para principiantes (15 ejemplos)

Comando lsof en Linux (10 ejemplos)

Más de 15 ejemplos para el comando cURL de Linux