Funcionamiento del comando Lsof

La aplicacion lsof (list open files) nos sirve para listar los procesos que se encuentran abriendo un determinado archivo, directorio, socket, etc.

A continuación se explica el funcionamiento de este comando.

Utilización

Veamos algunos de sus usos mas frecuentes:

Tratamos de desmontar un disco o CD-ROM

# umount /cdrom
umount: /cdrom: device is busy

 

No se ha desmontado porque algun proceso esta haciendo uso del CDROM y hasta que no lo libere no podremos desmontarlo, el problema es que desconocemos que aplicacion se encuentra usando dicho CDROM, mediante lsof podremos conocerlo.

# lsof +D /cdrom
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bash 621 ariel cwd DIR 3,64 2048 57344 /cdrom


Lsof nos dice que el proceso bash esta usando el directorio "/cdrom" (directorio actual de trabajo) con el usuario ariel. Cerrando ese bash podremos desmontar el CDROM.

# kill 621


Otro uso seria cuando miramos los servicios que esta brindando nuestro Linux:

# netstat -tl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:printer *:* LISTEN
tcp 0 0 localhost:www *:* LISTEN
tcp 0 0 *:3000 *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN


Vemos algun puerto en espera (listen) que desconocemos que aplicacion este detras. Mediante lsof podremos saberlo.


Para el ejemplo anterior, investigamos que aplicacion abre el puerto 3000.

# lsoft -i :3000
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
faucet 279 root 3u IPv4 349 TCP *:3000 (LISTEN)

Vemos que la aplicacion faucet esta abriendo el puerto 3000.