Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Uso de lsof.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2014 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Acerca de lsof.

Lsof significa «listar archivos abiertos» (list open files). Es utilizado ampliamente en sistemas operativos tipo POSIX para hacer reportes de archivos y los procesos que están utilizando a éstos. Se puede utilizar para revisar que procesos están haciendo uso de  directorios, archivos ordinarios, tuberías (pipes), zócalos de red (sockets) y dispositivos. Uno de los principales usos de determinar que procesos están haciendo uso de archivos en una partición cuando esta no se puede desmontar. Lsof fue desarrollado por Vic Abell, quien alguna vez fue director del Centro de Cómputo de la Universidad de Purdue.

Equipamiento lógico necesario.

En CentOS, Fedora™ y Red Hat™ Enterprise Linux.

Para instalar lsof, ejecute lo siguiente:

yum -y install lsof

En openSUSE™ y SUSE™ Linux Enterprise.

Para instalar lsof, ejecute lo siguiente:

yast -i lsof

Procedimientos.

El manual completo de lsof puede consultarse ejecutando lo siguiente:

man 8 lsof

Para ver todos los procesos que utilizan el sistema de archivos en general, ejecute lsof sin opciones u argumentos:

lsof

En ejemplo de la salida típica sería como la siguiente:

COMMAND     PID      USER   FD      TYPE     DEVICE       SIZE       NODE NAME
init 1 root cwd DIR 9,3 4096 2 /
init 1 root rtd DIR 9,3 4096 2 /
init 1 root txt REG 9,3 38620 146434 /sbin/init
init 1 root mem REG 9,3 125736 175507 /lib/ld-2.5.so
init 1 root mem REG 9,3 1602164 175514 /lib/i686/nosegneg/libc-2.5.so
init 1 root mem REG 9,3 16428 175518 /lib/libdl-2.5.so
init 1 root mem REG 9,3 93508 175677 /lib/libselinux.so.1
init 1 root mem REG 9,3 242880 175573 /lib/libsepol.so.1
init 1 root 10u FIFO 0,15 1543 /dev/initctl

Para visualizar más cómodamente esta salida, utilice less o more como subrutinas. Ejemplo:

lsof | less

Puede especificarse que se muestren todos los procesos desde un directorio en particular, solamente especificando este luego de lsof. En el siguiente ejemplo se solicita a lsof mostrar todos los procesos que estén haciendo uso de algo dentro de /var.

lsof /var

La salida de la anterior puede ser similar a la siguiente:

COMMAND     PID   USER   FD   TYPE DEVICE       SIZE     NODE NAME
auditd 2247 root 5w REG 9,1 408058 5341208 /var/log/audit/audit.log
syslogd 2281 root 1w REG 9,1 1134708 17006593 /var/log/messages
syslogd 2281 root 2w REG 9,1 12461 17006594 /var/log/secure
syslogd 2281 root 3w REG 9,1 9925 17006595 /var/log/maillog
syslogd 2281 root 4w REG 9,1 3339 17006598 /var/log/cron
syslogd 2281 root 5w REG 9,1 0 17006596 /var/log/spooler
syslogd 2281 root 6w REG 9,1 916 17006597 /var/log/boot.log
named 2350 named cwd DIR 9,1 4096 16351240 /var/named/chroot/var/named
named 2350 named rtd DIR 9,1 4096 16351236 /var/named/chroot
named 2350 named 9r CHR 1,8 16351246 /var/named/chroot/dev/random
rpc.statd 2407 root cwd DIR 9,1 4096 15433729 /var/lib/nfs/statd
rpc.statd 2407 root 8w REG 9,1 5 25591831 /var/run/rpc.statd.pid

Si se quiere mostrar solamente el archivo utilizado por un procesos en particular, se utiliza la opción -p seguida del número de proceso. En el siguiente ejemplo se solicita a lsof mostrar los archivos utilizados por el proceso 2281 que arbitrariamente se ejecuta en un sistema:

lsof -p 2281

Si hubiera un proceso 2281, la salida podría verse como la siguiente:

COMMAND  PID USER   FD   TYPE     DEVICE    SIZE     NODE NAME
syslogd 2281 root cwd DIR 9,3 4096 2 /
syslogd 2281 root rtd DIR 9,3 4096 2 /
syslogd 2281 root txt REG 9,3 35800 146392 /sbin/syslogd
syslogd 2281 root mem REG 9,3 1602164 175514 /lib/i686/nosegneg/libc-2.5.so
syslogd 2281 root mem REG 9,3 46680 175529 /lib/libnss_files-2.5.so
syslogd 2281 root mem REG 9,3 125736 175507 /lib/ld-2.5.so
syslogd 2281 root 0u unix 0xc0acfc80 6909 /dev/log
syslogd 2281 root 1w REG 9,1 1134708 17006593 /var/log/messages
syslogd 2281 root 2w REG 9,1 12461 17006594 /var/log/secure
syslogd 2281 root 3w REG 9,1 9925 17006595 /var/log/maillog
syslogd 2281 root 4w REG 9,1 3339 17006598 /var/log/cron
syslogd 2281 root 5w REG 9,1 0 17006596 /var/log/spooler
syslogd 2281 root 6w REG 9,1 916 17006597 /var/log/boot.log

La opción -i hará que se muestren todos los archivos de red (Internet y x.25) utilizados por procesos de red. Si se quiere mostrar los archivos de red en uso por algún proceso de red en particular, se utilizan las opciones -i seguido de una subrutina con grep y el nombre de algún servicio. En el siguiente ejemplo se pide a lsof mostrar solamente los archivos de red utilizados por los procesos de red derivados de named:

lsof -i | grep named

Lo anterior puede devolver una salida similar a la siguiente.

named      2350  named   20u  IPv4    7091       UDP localhost.localdomain:domain 
named 2350 named 21u IPv4 7092 TCP localhost.localdomain:domain (LISTEN)
named 2350 named 22u IPv4 7093 UDP servidor.redlocal.net:domain
named 2350 named 23u IPv4 7094 TCP servidor.redlocal.net:domain (LISTEN)
named 2350 named 24u IPv4 7095 UDP *:filenet-tms
named 2350 named 25u IPv6 7096 UDP *:filenet-rpc
named 2350 named 26u IPv4 7097 TCP localhost.localdomain:rndc (LISTEN)
named 2350 named 27u IPv6 7098 TCP localhost6.localdomain6:rndc (LISTEN)
named 2350 named 28u IPv4 1153790 UDP 192.168.122.1:domain

Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Última Edición: 14/05/2014, 11:10|Hits: 27,514 Ver la versión para imprimir