Espacio de tecnologia, software libre y sus derivados. Una horda de monos entrenados escriben de vez en cuando por aqui algunas noticias, opiniones e incluso alguna que otra cosa fuera del tema. Maqueros, favor de abstenerse que no somos lo suficientemente guapos.

Piano daemon

Usando lsof

lsof (ls Open Files) o listado de archivos abiertos, es una gran aplicación pero bastante desconocida y que nos puede sacar de muchas dudas o apuros. lsof es una herramienta muy completa, por lo que en éste articulo solo se muestra la información que más vamos a necesitar.

NOTA: Si se quiere saber más sobre el uso de lsof ejecutad “man lsof “.

Utilidad de lsof.

Como he dicho antes, lsof muestra los archivos y procesos abiertos en el moment o del chequeo, por lo que nos será de utilidad para llevar un seguimiento de seguridad o de procesos bloqueados.

Desmontando un CD rebelde.

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

Vaya, ¡¿por qué no se desmonta y me dice que el dispositivo está ocupado?! 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
konqueror 621 zx80 cwd DIR 3,64 2048 57344 /cdrom

lsof nos dice que el proceso konqueror está usando el directorio /cdrom con el usuario zx80. La solución es sencilla entoces, basta con cerrar konqueror y problema resuelto. Para los que usamos mucho la consola y llegamos a tener unas cuantas sesiones abiertas pasa que en vez de konqueror puede salir bash. Esto es debido a que alguna de las consolas está dentro del directorio activo del cd-rom, por lo que bastaría salirse del directorio de trabajo del CD o cerrar ese bash.

# kill 621

Ya podemos desmontar.

Quien está detrás de una conexión ?

Esta vez usamos la herramienta netstat. Para quien no conozca esta herramienta decir que es un monitor de red. Nos dirá qué conexiones activas tenemos y mucha inform ación sobre ellas. Vamos a ver qué conexiones tenemos activas:

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

Nos muestra información sobre algunos puertos en espera (Listen) pero desconocemos qué aplicación está detrás. Me llama la atención el puerto TCP 6000, así que voy a ver quien está detrás:

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

Vemos que la aplicacion X es la culpable de que el puerto 6000 esté abierto y a la espera.

Qué procesos están usando un directorio.

Una de las utilidades que más se usan es averiguar qué aplicaciones están trabajando en un directorio concreto. Se usa esta opción sobre todo para vigilar el uso de troyanos o espias. SI quisiera saber qué procesos están usando mi directorio pondría lo siguiente:

pianodaemon@pianodaemon-laptop:~$ lsof +D /home/pianodaemon/
COMMAND    PID        USER   FD   TYPE DEVICE    SIZE    NODE NAME
x-session 5962 pianodaemon  cwd    DIR    8,1    4096 6684674 /home/pianodaemon/
compiz    6013 pianodaemon  cwd    DIR    8,1    4096 6684674 /home/pianodaemon/
gnome-pan 6015 pianodaemon  cwd    DIR    8,1    4096 6684674 /home/pianodaemon/
nautilus  6017 pianodaemon  cwd    DIR    8,1    4096 6684674 /home/pianodaemon/
emerald   6127 pianodaemon  cwd    DIR    8,1    4096 6684674 /home/pianodaemon/
compiz.re 6128 pianodaemon  cwd    DIR    8,1    4096 6684674 /home/pianodaemon/
................ ...

Otros usos.

Estos son otros usos de la herramienta lsof, que aunque son algo menos usados nos pueden sacar de algun apuro o duda.
# lsof - g n: Donde n es un ID de grupo.

Esto muestra los archivos abiertos por un grupo que queramos. Si quisieramos ver los archivos de varios grupos a la vez, los separariamos por comas:

# lsof - g wheel,users

# lsof - u n: Donde n es un ID de usuario, lo que nos mostrará los archivos abiertos por ese usuario. Al igual que con los grupos, se pueden especificar varios usuarios de una vez.

# lsof - l: Para no convertir el ID a nombre de usuario, útil en casos de logeos corruptos o sistemas lentos.

# lsof - N: Nos muestra los archivos NFS abiertos.

Comenta