El comando lsof, que significa “List Open Files” (lista archivos abiertos), es una herramienta potente en el sistema operativo Linux que proporciona información esencial sobre los archivos que están abiertos por varios procesos.
Este comando versátil permite a los administradores del sistema monitorear y administrar archivos, sockets y conexiones de red, ofreciendo una vista integral de cómo se están utilizando los recursos dentro del sistema.
Similar a comandos como netstat y fuser, el comando lsof se usa para identificar los archivos a los que acceden diferentes procesos, lo que lo convierte en una herramienta indispensable para la resolución de problemas y el mantenimiento del sistema. Ya sea que seas un administrador de red que busca resolver conflictos o un desarrollador que busca optimizar la asignación de recursos, el comando lsof, que a menudo se usa junto con comandos como grep, puede ser una adición útil a tu kit de herramientas.
Cómo instalar el comando lsof
En muchas distribuciones de Linux, el comando lsof viene preinstalado. Sin embargo, si no está disponible en tu sistema, puedes instalarlo fácilmente utilizando el administrador de paquetes específico para tu distribución.
Sistemas basados en Debian (por ejemplo, Ubuntu)
Instalar:
sudo apt-get update
sudo apt-get install lsof
Desinstalar:
sudo apt-get remove lsof
Sistemas basados en Red Hat (por ejemplo, CentOS, RHEL)
Instalar usando Yum (versiones anteriores):
sudo yum install lsof
Instalar usando DNF (versiones más recientes):
sudo dnf install lsof
Desinstalar usando Yum:
sudo yum remove lsof
Desinstalar usando DNF:
sudo dnf remove lsof
Fedora
Instalar (versiones anteriores usando Yum):
sudo yum install lsof
Instalar (versiones más recientes usando DNF):
sudo dnf install lsof
Desinstalar usando Yum:
sudo yum remove lsof
Desinstalar usando DNF:
sudo dnf remove lsof
Cómo Usar lsof
Listar todos los archivos abiertos
Sintaxis:
lsof
Explicación: Lista todos los archivos abiertos en el sistema.
Ejemplo:
lsof
Resultado:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,1 4096 2 /
bash 1234 user txt REG 253,1 111350 123456 /bin/bash
sshd 567 root txt REG 253,1 556872 789012 /usr/sbin/sshd
chrome 2345 user mem REG 253,1 1234567 345678 /usr/lib/chrome/chrome
java 6789 user mem REG 253,1 987654 456789 /usr/lib/jvm/java-8-openjdk/jre/bin/java
Esta salida muestra todos los archivos abiertos, incluyendo el nombre del comando, el ID del proceso (PID), el usuario, el descriptor de archivo (FD), el tipo, el dispositivo, el tamaño y la ruta del archivo.
Listar archivos abiertos por un usuario específico
Sintaxis:
lsof -u <nombre_de_usuario>
Explicación: Lista todos los archivos abiertos por un usuario específico.
Ejemplo:
lsof -u mateo
Resultado:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2345 mateo cwd DIR 253,1 4096 2 /home/mateo
bash 2345 mateo txt REG 253,1 111350 123456 /bin/bash
vim 3456 mateo cwd DIR 253,1 4096 567890 /home/mateo/projects
vim 3456 mateo txt REG 253,1 1048576 678901 /usr/bin/vim
firefox 4567 mateo mem REG 253,1 1572864 789012 /usr/lib/firefox/firefox
firefox 4567 mateo mem REG 253,1 1048576 890123 /usr/lib/x86_64-linux-gnu/libgtk-3.so.0.2404.16
Esta salida lista todos los archivos abiertos por el usuario mateo
, incluyendo el nombre del comando, el PID, el usuario y otros detalles.
Listar archivos usados por un proceso específico
Sintaxis:
lsof -p <PID>
Explicación: Lista todos los archivos usados por un ID de proceso específico.
Ejemplo:
lsof -p 1234
Resultado:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1234 user cwd DIR 253,1 4096 2 /
bash 1234 user txt REG 253,1 111350 123456 /bin/bash
bash 1234 user mem REG 253,1 123456 654321 /lib/x86_64-linux-gnu/libtinfo.so.5.9
Esta salida lista todos los archivos usados por el proceso con PID 1234, incluyendo el nombre del comando, el PID, el usuario y otros detalles.
Listar archivos en un puerto específico
Sintaxis:
lsof -i :<puerto>
Explicación: Lista todos los archivos asociados con un puerto de red específico.
Ejemplo:
lsof -i :80
Resultado:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1234 root 4u IPv4 123456 0t0 TCP *:http (LISTEN)
nginx 5678 www-data 6u IPv4 654321 0t0 TCP 192.168.1.10:http->192.168.1.20:54832 (ESTABLISHED)
Esta salida lista todos los archivos asociados con el puerto 80, típicamente usado para HTTP. Incluye el nombre del comando, el PID, el usuario y otros detalles relacionados con la conexión de red.
Listar archivos abiertos por un comando específico
Sintaxis:
lsof -c <nombre_del_comando>
Explicación: Lista todos los archivos abiertos por un comando específico.
Ejemplo:
lsof -c sshd
Resultado:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1234 root cwd DIR 253,1 4096 2 /
sshd 1234 root rtd DIR 253,1 4096 2 /
sshd 1234 root txt REG 253,1 911350 123456 /usr/sbin/sshd
sshd 1234 root 3u IPv4 123456 0t0 TCP *:ssh (LISTEN)
Esta salida lista todos los archivos abiertos por el comando sshd
, incluyendo el nombre del comando, el PID, el usuario y otros detalles.
Listar archivos abiertos en un sistema de archivos específico
Sintaxis:
lsof +D <directorio>
Explicación: Lista todos los archivos abiertos dentro de un directorio o sistema de archivos específico.
Ejemplo:
lsof +D /var
Resultado:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
syslogd 1023 root cwd DIR 253,1 4096 65536 /var
mysqld 2045 mysql cwd DIR 253,1 4096 65537 /var/lib/mysql
nginx 3071 www cwd DIR 253,1 4096 65538 /var/www
Esta salida lista todos los archivos abiertos dentro del directorio /var, incluyendo el nombre del comando, el PID, el usuario y otros detalles.
Listar archivos de red de un protocolo específico
Sintaxis:
lsof -i <protocolo>
Explicación: Lista todos los archivos de red que usan un protocolo específico (por ejemplo, TCP o UDP).
Ejemplo:
lsof -i TCP
Resultado:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1234 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
firefox 2345 mateo 50u IPv4 67890 0t0 TCP 192.168.1.2:58794->93.184.216.34:443 (ESTABLISHED)
nginx 3456 www 6u IPv4 54321 0t0 TCP *:80 (LISTEN)
Esta salida lista todas las conexiones de red TCP, incluyendo el nombre del comando, el PID, el usuario y otros detalles relacionados con la conexión de red.
Listar archivos excluyendo aquellos abiertos por un usuario específico
Sintaxis:
lsof -u ^<nombre_de_usuario>
Explicación: Lista todos los archivos excluyendo aquellos abiertos por un usuario específico.
Ejemplo:
lsof -u ^mateo
Resultado:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1234 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
nginx 2345 www 6u IPv4 54321 0t0 TCP *:80 (LISTEN)
mysql 3456 mysql 4u REG 253,1 16384 65793 /var/lib/mysql/ibdata1
firefox 4567 maria 50u IPv4 67890 0t0 TCP 192.168.1.2:58794->93.184.216.34:443 (ESTABLISHED)
Esta salida lista todos los archivos excluyendo aquellos abiertos por el usuario mateo
, incluyendo el nombre del comando, el PID, el usuario y otros detalles.
Más comandos de Linux:
Operaciones de Directorios | rmdir · cd · pwd · exa · ls |
Operaciones de Archivos | cat · cp · dd · less · touch · ln · rename · more · head |
Operaciones de Sistema de Archivos | chown · mkfs · locate |
Redes | ping · curl · wget · iptables · mtr |
Búsqueda y Procesamiento de Texto | find · grep · sed · whatis · ripgrep · fd · tldr |
Información y Gestión del Sistema | env · history · top · who · htop · glances · lsof |
Gestión de Usuarios y Sesiones | screen · su · sudo · open |
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.