|
|
Cómo utilizar 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-2008 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 es un mandato que significa «listar ficheros abiertos» (list open files). Es utilizado ampliamente en sistemas operativos tipo POSIX
para hacer reportes de ficheros y los procesos que están utilizando a
éstos. Se puede utilizar para revisar que procesos están haciendo uso
de directorios, ficheros 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 ficheros 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. Procedimientos.En ausencia de parámetros, lsof mostrará todos los procesos haciendo uso de ficheros. 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, se puede utilizar el mandato less o el mandato more como subrutinas. Ejemplo:
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.
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 fichero utilizado por un procesos en
particular, se utiliza la opción -p seguida del número de proceso. En
el siguiente ejemplose solicita a lsof mostrar los ficheros utilizados por el proceso 2281 que arbitrariamente se ejecuta en un sistema:
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 ficheros de red (Internet y x.25) utilizados por procesos de red. Si se quiere mostrar los ficheros 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 ficheros de red utilizados por los procesos de red derivados de 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
|
Última Edición viernes 17 de julio, 2009 @16:07|6,602 Hits 
|
|
Comentarios Recientes