LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

Esta es nuestra serie continua de comandos de Linux y en este artículo, vamos a revisar el comando lsof con ejemplos prácticos. lsof, que significa 'LiSt Open Files', se utiliza para averiguar qué archivos se abren mediante qué proceso.

Como todos sabemos, Linux / Unix considera todo como un archivo ( tuberías , sockets , directorios , dispositivos, etc.). Una de las razones para usar el comando lsof es cuando un disco no se puede desmontar porque dice que se están usando los archivos. Con la ayuda de este comando, podemos identificar fácilmente los archivos que están en uso.

1. Enumere todos los archivos abiertos con el comando lsof

En el siguiente ejemplo, mostrará una lista larga de archivos abiertos, algunos de ellos extraídos para una mejor comprensión, muestran las columnas como Comando , PID , USUARIO , FD , TIPO, etc.

# lsof

COMMAND    PID      USER   FD      TYPE     DEVICE  SIZE/OFF       NODE NAME
init         1      root  cwd      DIR      253,0      4096          2 /
init         1      root  rtd      DIR      253,0      4096          2 /
init         1      root  txt      REG      253,0    145180     147164 /sbin/init
init         1      root  mem      REG      253,0   1889704     190149 /lib/libc-2.12.so
init         1      root   0u      CHR        1,3       0t0       3764 /dev/null
init         1      root   1u      CHR        1,3       0t0       3764 /dev/null
init         1      root   2u      CHR        1,3       0t0       3764 /dev/null
init         1      root   3r     FIFO        0,8       0t0       8449 pipe
init         1      root   4w     FIFO       0,8       0t0       8449 pipe
init         1      root   5r      DIR       0,10         0          1 inotify
init         1      root   6r      DIR       0,10         0          1 inotify
init         1      root   7u     unix 0xc1513880       0t0       8450 socket

2. Lista de archivos abiertos específicos del usuario

El siguiente comando mostrará la lista de todos los archivos abiertos del usuario javier .

# lsof -u javier

COMANDO PID USUARIO TIPO FD TAMAÑO SIZE/OFF NODO  NOMBRE
sshd    1838 javier cwd DIR 253,0 4096         2 /
sshd    1838 javier rtd DIR 253,0 4096         2 /
sshd    1838 javier txt REG 253,0 532336  188129 /usr/sbin/sshd
sshd    1838 javier mem REG 253,0 19784   190237 /lib/libdl-2.12.so
sshd    1838 javier mem REG 253,0 122436  190247 /lib/libselinux.so.1
sshd    1838 javier mem REG 253,0 255968  190256 /lib/libgssapi_krb5.so.2.2
sshd    1838 javier mem REG 253,0 874580  190255 /lib/libkrb5.so.3.3

3. Busque procesos que se ejecutan en un puerto específico

Para conocer todos los procesos de Linux en ejecución de un puerto específico, simplemente use el siguiente comando con la opción -i . El siguiente ejemplo enumerará todos los procesos en ejecución del puerto 22 .

[root@localhost ~]# lsof -i tcp:22
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    989 root    3u  IPv4  34876      0t0  TCP *:ssh (LISTEN)
sshd    989 root    4u  IPv6  34878      0t0  TCP *:ssh (LISTEN)

4. Enumere solo archivos abiertos IPv4 e IPv6

En el siguiente ejemplo, solo se muestran los archivos de red IPv4 e IPv6 abiertos con comandos separados.

[root@localhost ~]# lsof -i 4
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd      1    root   43u  IPv4  17233      0t0  TCP *:sunrpc (LISTEN)
systemd      1    root   44u  IPv4  17236      0t0  UDP *:sunrpc
avahi-dae  910   avahi   12u  IPv4  33455      0t0  UDP *:mdns
avahi-dae  910   avahi   14u  IPv4  34819      0t0  UDP *:58845
NetworkMa  932    root   20u  IPv4 309136      0t0  TCP localhost.localdomain:48228->67.234.144.68:http (SYN_SENT)
NetworkMa  932    root   21u  IPv4 310193      0t0  TCP localhost.localdomain:37366->proxy13-rdu02.fedoraproject.org:http (SYN_SENT)
chronyd    955  chrony    5u  IPv4  32379      0t0  UDP localhost:323
cupsd      988    root    8u  IPv4  37978      0t0  TCP localhost:ipp (LISTEN)
sshd       989    root    3u  IPv4  34876      0t0  TCP *:ssh (LISTEN)
dnsmasq   1596 dnsmasq    3u  IPv4  38418      0t0  UDP *:bootps
dnsmasq   1596 dnsmasq    5u  IPv4  38421      0t0  UDP localhost.localdomain:domain
[root@localhost ~]# lsof -i 6
COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd      1   root   45u  IPv6  17241      0t0  TCP *:sunrpc (LISTEN)
systemd      1   root   46u  IPv6  17246      0t0  UDP *:sunrpc
avahi-dae  910  avahi   13u  IPv6  33456      0t0  UDP *:mdns
avahi-dae  910  avahi   15u  IPv6  34820      0t0  UDP *:34893
chronyd    955 chrony    6u  IPv6  32380      0t0  UDP localhost:323
cupsd      988   root    7u  IPv6  37977      0t0  TCP localhost:ipp (LISTEN)
sshd       989   root    4u  IPv6  34878      0t0  TCP *:ssh (LISTEN)
mysqld    1140  mysql   32u  IPv6  37590      0t0  TCP *:mysql (LISTEN)
kdeconnec 2024 javier   11u  IPv6  47269      0t0  UDP *:xmsg
kdeconnec 2024 javier   12u  IPv6  47270      0t0  TCP *:xmsg (LISTEN)

 

5. Enumere los archivos abiertos de los rangos de puertos TCP 1-1024

Para enumerar todo el proceso en ejecución de archivos abiertos del puerto TCP, varía de 1 a 1024 .

[root@localhost ~]# lsof -i tcp:1-1024
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd      1    root   43u  IPv4  17233      0t0  TCP *:sunrpc (LISTEN)
systemd      1    root   45u  IPv6  17241      0t0  TCP *:sunrpc (LISTEN)
cupsd      988    root    7u  IPv6  37977      0t0  TCP localhost:ipp (LISTEN)
cupsd      988    root    8u  IPv4  37978      0t0  TCP localhost:ipp (LISTEN)
sshd       989    root    3u  IPv4  34876      0t0  TCP *:ssh (LISTEN)
sshd       989    root    4u  IPv6  34878      0t0  TCP *:ssh (LISTEN)
dnsmasq   1596 dnsmasq    6u  IPv4  38422      0t0  TCP localhost.localdomain:domain (LISTEN)

6. Excluir usuario con carácter '^'

Aquí, hemos excluido al usuario root . Puede excluir a un usuario en particular usando '^' con el comando como se muestra arriba.

[root@localhost ~]# lsof -i -u^root
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
avahi-dae  910   avahi   12u  IPv4  33455      0t0  UDP *:mdns
avahi-dae  910   avahi   13u  IPv6  33456      0t0  UDP *:mdns
avahi-dae  910   avahi   14u  IPv4  34819      0t0  UDP *:58845
avahi-dae  910   avahi   15u  IPv6  34820      0t0  UDP *:34893
chronyd    955  chrony    5u  IPv4  32379      0t0  UDP localhost:323
chronyd    955  chrony    6u  IPv6  32380      0t0  UDP localhost:323
mysqld    1140   mysql   32u  IPv6  37590      0t0  TCP *:mysql (LISTEN)
dnsmasq   1596 dnsmasq    3u  IPv4  38418      0t0  UDP *:bootps
dnsmasq   1596 dnsmasq    5u  IPv4  38421      0t0  UDP localhost.localdomain:domain
dnsmasq   1596 dnsmasq    6u  IPv4  38422      0t0  TCP localhost.localdomain:domain (LISTEN)
kdeconnec 2024  javier   11u  IPv6  47269      0t0  UDP *:xmsg
kdeconnec 2024  javier   12u  IPv6  47270      0t0  TCP *:xmsg (LISTEN)
akonadi_i 2552  javier   19u  IPv4  64540      0t0  TCP localhost.localdomain:54964->mail.extrehost.com:imap (ESTABLISHED)
akonadi_i 2552  javier   21u  IPv4  64595      0t0  TCP localhost.localdomain:54974->mail.extrehost.com:imap (ESTABLISHED)

7. Averigüe quién está buscando qué archivos y comandos.

El siguiente ejemplo muestra que el usuario javier está usando comandos como ping y el directorio / etc.

# lsof -i -u javier

[root@localhost ~]# lsof -i -u javier
COMMAND    PID    USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd      1    root   43u     IPv4              17233       0t0        TCP *:sunrpc (LISTEN)
systemd      1    root   44u     IPv4              17236       0t0        UDP *:sunrpc
systemd      1    root   45u     IPv6              17241       0t0        TCP *:sunrpc (LISTEN)
systemd      1    root   46u     IPv6              17246       0t0        UDP *:sunrpc
avahi-dae  910   avahi   12u     IPv4              33455       0t0        UDP *:mdns
avahi-dae  910   avahi   13u     IPv6              33456       0t0        UDP *:mdns
avahi-dae  910   avahi   14u     IPv4              34819       0t0        UDP *:58845
avahi-dae  910   avahi   15u     IPv6              34820       0t0        UDP *:34893
chronyd    955  chrony    5u     IPv4              32379       0t0        UDP localhost:323
chronyd    955  chrony    6u     IPv6              32380       0t0        UDP localhost:323
cupsd      988    root    7u     IPv6              37977       0t0        TCP localhost:ipp (LISTEN)
cupsd      988    root    8u     IPv4              37978       0t0        TCP localhost:ipp (LISTEN)
sshd       989    root    3u     IPv4              34876       0t0        TCP *:ssh (LISTEN)
sshd       989    root    4u     IPv6              34878       0t0        TCP *:ssh (LISTEN)
mysqld    1140   mysql   32u     IPv6              37590       0t0        TCP *:mysql (LISTEN)
dnsmasq   1596 dnsmasq    3u     IPv4              38418       0t0        UDP *:bootps
dnsmasq   1596 dnsmasq    5u     IPv4              38421       0t0        UDP localhost.localdomain:domain
dnsmasq   1596 dnsmasq    6u     IPv4              38422       0t0        TCP localhost.localdomain:domain (LISTEN)
systemd   1699  javier  cwd       DIR                8,3      4096          2 /
systemd   1699  javier  rtd       DIR                8,3      4096          2 /
systemd   1699  javier  txt       REG                8,3   1635408    3294840 /usr/lib/systemd/systemd
systemd   1699  javier  mem       REG                8,3   2080456    3292158 /usr/lib64/libm-2.28.so

8. Enumere todas las conexiones de red

El siguiente comando con la opción '-i' muestra la lista de todas las conexiones de red ' ESCUCHANDO Y ESTABLECIDO' .

# lsof -i

9. Búsqueda por PID

El siguiente ejemplo solo muestra de quién es el PID 1 [ Uno ].

# lsof -p 1

COMANDO PID USUARIO TIPO FD TAMAÑO DEL DISPOSITIVO / NOMBRE APAGADO NOMBRE
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 145180 147164 / sbin / init
init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so
init 1 root mem REG 253,0 142472 189970 /lib/ld-2.12.so

10. Elimina toda la actividad de un usuario en particular

A veces, es posible que deba eliminar todos los procesos de un usuario específico. El siguiente comando matará todos los procesos del usuario de javier .

# kill -9 `lsof -t -u javier`

Nota: Aquí, no es posible dar ejemplos de todas las opciones disponibles, esta guía es solo para mostrar cómo se puede usar el comando lsof . Puede consultar la página de manual del comando lsof para obtener más información al respecto. Compártelo si encuentra que este artículo es útil a través de nuestro cuadro de comentarios a continuación.

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías