Hoy vamos a ver un pequeño comando que sirve para mostrar rápidamente cuales son los archivos que un proceso (PID) o un usuario esta utilizando, el término lsof es la abreviatura de LiSt Open Files que como lo indica su nombre lista los archivos abiertos.
Si lanzamos el comando en la terminal (# lsof) veremos una lista bastante extensa pero a nosotros nos interesa saber lo siguiente, Command, PID, USER, FD, TYPE.
Entonces detallemos que es cada columna
1- COMMAND: comando que se esta ejecutando
2- PID: id de proceso
3- USER: Usuario
4- FD: muestra una descripción que explicamos brevemente
- cwd current working directory
- rtd root directory
- txt program text (code and data)
- mem memory-mapped file
5- TYPE: tipo
- DIR – Directory
- REG – Regular file
- CHR – Character special file.
- FIFO – First In First Out
Bien, ahora voy a mostrar varios ejemplos de lo que podemos hacer con algunas capturas de pantalla y otras para que las puedan probar solo mencionando el comando con los parámetros.
Ejemplo1:
Ver los archivos que tiene un determinado PID.
Sabemos que para ver el PID de un determinado proceso haceos ps, y como quiero ver el que le corresponde a firefox hacemos:
# ps -A | grep firefox
Teniendo el PID, lanzo lsof y veamos su magia:
# lsof -p 3243
Ejemplo 2
Visualizar los puertos TCP y UDP así como las conexiones activas en el sistema, usando el parámetro -i
# lsof -i
Ejemplo 3
Ver los archivos que esta utilizando un determinado usuario
# lsof -u nksistemas
Ejemplo 4
Buscar procesos que usan un determinado puerto ej, el puerto 22
# lsof -i TCP:22
Ejemplo 5
Ver archivos abiertos por un proceso o programa concreto
# lsof -c cupsd
Ejemplo 6
Mostrar procesos que usan IPv4 o IPV6
# lsof -i 4
# lsof -i 6
Ejemplo 7
Ver archivos abiertos por un rango de puertos
# lsof -i TCP:1-1024
Ejemplo 8
Ver archivos en uso por un usuario, en un directorio o path específico
# lsof -u nksistemas -a +D /bin
Para más ejemplos prácticos usar man lsof.