El comando lsof

20 Septiembre, 2006

En los sistemas UNIX todo son ficheros. Las unidades de disco son ficheros, los sockets son ficheros, incluso la tarjeta de sonido es un fichero. Por lo tanto, nos sería útil una herramienta que nos mostrara cuantos ficheros está utilizando cada proceso y eso, precisamente, es lo que hace lsof.

Si lo ejecutamos sin ningún parámetro veremos una lista completa de los ficheros abiertos en nuestro sistema pero así poca utilidad le daremos. Podemos ver una lista más ordenada usando este comando:

lsof | awk ‘{ print $1 }’ | sort | uniq -c | sort -nr

Al hacerlo aparecerá una lista similar a esta:

4245 apache2
176 sshd
157 mysqld
85 bash
76 pure-ftpd
51 hulamodwe
48 getty

Así podemos ver cuantos ficheros tiene abiertos cada proceso y si el servidor está muy cargado nos puede dar una idea de quien es el culpable y además ver si se está alcanzando el límite de ficheros abiertos simultáneamente. Esto lo podemos ver con el comando:

sysctl fs.file-max

Y modificarlo si es necesario con este mismo comando:

sysctl fs.file-max=256000

2 comentarios para “El comando lsof”

  1. e-interiores » Ficheros abiertos en linux dice:

    [...] conocer en cada momento el número de ficheros que tiene abierto un proceso usando el comando lsof Aquí nos emplican con todo detalle el tema, a la vez que nos proporcionan una línea de comando para [...]

  2. Francisco Dominguez dice:

    una forma de ver el numero de conexiones activas con cierta aplicación es de la siguiente manera

    lsof -p [PID del proceso] | wc -l

Deja tu comentario