LinuxParty
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.
-
Seguridad
- Conexión Segura NFS en Linux, Tunelizar NFS sobre SSH y Configuración de NFS sobre SSH para Mayor Seguridad
- Utilizar ssh sin contraseña con ssh-keygen y ssh-copy-id
- Millones de teléfonos móviles podrían ser vulnerables a la vigilancia del gobierno chino
- Cómo limitar las conexiones SSH a la red local en Linux
- Los televisores inteligentes son como un «caballo de Troya digital» en los hogares
- Snort para Windows, detección de Intrusos y seguridad.
- Detección de Intrusiones con las herramientas: BASE y Snort.
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Configuración con Ejemplos de Snort para Windows, detección de intrusiones
- ¿El gobierno de EE. UU. ignoró la oportunidad de hacer que TikTok fuera más seguro?
- ¿Qué es SSH y cómo se utiliza? Los conceptos básicos de Secure Shell que necesitas saber
- Asegurar memcached del servidor, para evitar amplificar ataques DDoS
- Consejos de Seguridad para Pagos Móviles en España: Protege tus Transacciones con Estos Consejos Prácticos
- 22 herramientas de seguridad de servidores Linux de código abierto en 2023
- 8 hábitos que deben tomar los teletrabajadores altamente seguros