Comandos interesantes: lsof

lsof es un comando incluido en las distribuciones GNU/Linux y que permite lista todos los ficheros abiertos. Se podría considerar un comando de monitorización, puesto que permite controlar los ficheros, sockets y pipes que tiene un determinado proceso abierto. La información que nos muestra es muy similar a la que se puede obtener de /proc/$PID/fd, pero mucho más fácil de consultar.



Un ejemplo de cómo funciona,
shell> lsof  /var/log/auth.log
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
syslog-ng 542 root   9w    REG  202,2    28221 1491804 /var/log/auth.log

También permite consultar los ficheros abiertos por un determinado programa (pid), lo que facilita saber qué es lo que está realizando.
shell> lsof -p 542
COMMAND   PID USER   FD   TYPE     DEVICE SIZE/OFF      NODE NAME
syslog-ng 542 root  cwd    DIR      202,2     4096   1474716 /var/lib/syslog-ng
syslog-ng 542 root  mem    REG      202,2   113964   2973983 /lib/ld-2.11.2.so
syslog-ng 542 root   0r    CHR        1,3      0t0       545 /dev/null
syslog-ng 542 root   3u   unix 0xc2bfee00      0t0      2562 /dev/log
syslog-ng 542 root   4w   FIFO        0,8      0t0      2556 pipe
syslog-ng 542 root   8r    REG        0,3        0  26531988 /proc/kmsg
syslog-ng 542 root   9w    REG      202,2    28221   1491804 /var/log/auth.log
syslog-ng 542 root  11w    REG      202,2     8566   1491760 /var/log/daemon.log
syslog-ng 542 root  12w    REG      202,2        0   1492687 /var/log/kern.log
syslog-ng 542 root  13w    REG      202,2     2880   1491340 /var/log/syslog
syslog-ng 542 root  14u    REG      202,2    25703   1492016 /var/log/mail.log
syslog-ng 542 root  17w    REG      202,2     7363   1492346 /var/log/messages
syslog-ng 542 root  18w    CHR       4,10      0t0      1280 /dev/tty10
syslog-ng 542 root  19w   FIFO        0,5      0t0      2537 /dev/xconsole

lsof también permite pasarle como parámetro un puerto y ver qué proceso, ficheros o socket's lo están empleando.
shell> lsof -i :22
COMMAND PID   USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd   1467   root 3u IPv4   3802   0t0  TCP *:ssh (LISTEN)
sshd   1467   root 4u IPv6   3804   0t0  TCP *:ssh (LISTEN)
sshd  14984   root 3r IPv4  45111   0t0  TCP m.lo.com:ssh->j.lo.com:34248 (ESTABLISHED)
sshd  14986 javier 3u IPv4  45111   0t0  TCP m.lo.com:ssh->j.lo.com:34248 (ESTABLISHED)
sshd  15097   root 3r IPv4  45525   0t0  TCP m.lo.com:ssh->j.lo.com:34266 (ESTABLISHED)
sshd  15099 javier 3u IPv4  45525   0t0  TCP m.lo.com:ssh->j.lo.com:34266 (ESTABLISHED)
sshd  15124   root 3r IPv4  45673   0t0  TCP m.lo.com:ssh->j.lo.com:34452 (ESTABLISHED)
sshd  15126 javier 3u IPv4  45673   0t0  TCP m.lo.com:ssh->j.lo.com:34452 (ESTABLISHED)

Así como indicarle el tipo de conexión (tcp/udp) que se desea ver en el puerto.
shell> lsof -ni TCP:3306
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  13196 mysql   19u  IPv4  27586      0t0  TCP *:mysql (LISTEN)
shell> lsof -ni UDP:3306

Por defecto lsof realizar una resolución de nombres según lo especificado en el sistema GNU/Linux. Para evitar que realice dicha resolución, se le puede pasar la opción -n.
shell> lsof -ni :22
COMMAND  PID   USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd    1467   root 3u IPv4   3802  0t0 TCP *:ssh (LISTEN)
sshd    1467   root 4u IPv6   3804  0t0 TCP *:ssh (LISTEN)
sshd   14984   root 3r IPv4  45111  0t0 TCP 10.0.0.8:ssh->10.0.0.2:4248 (ESTABLISHED)
sshd   14986 javier 3u IPv4  45111  0t0 TCP 10.0.0.8:ssh->10.0.0.2:4248 (ESTABLISHED)
sshd   15097   root 3r IPv4  45525  0t0 TCP 10.0.0.8:ssh->10.0.0.2:4266 (ESTABLISHED)
sshd   15099 javier 3u IPv4  45525  0t0 TCP 10.0.0.8:ssh->10.0.0.2:4266 (ESTABLISHED)
sshd   15124   root 3r IPv4  45673  0t0 TCP 10.0.0.8:ssh->10.0.0.2:4452 (ESTABLISHED)
sshd   15126 javier 3u IPv4  45673  0t0 TCP 10.0.0.8:ssh->10.0.0.2:4452 (ESTABLISHED)

Por ejemplo, si deseamos tener un listado de todas las conexiones que tenemos establecidas  de tipo IPv4, lo podremos realizar de la siguiente manera.
shell> lsof -n +M -i4
COMMAND PID   USER FD  TYPE DEVICE SIZE/OFF NODE NAME
dropbox 156 javier 20u IPv4 12027 0t0 UDP *:17500 
dropbox 158 javier 23u IPv4 12031 0t0 TCP *:17500 (LISTEN)
dropbox 186 javier 24u IPv4 13952 0t0 TCP 10.0.0.8:39078->199.47.217.146:www (ESTABLISHED)
chrome  194 javier 90u IPv4 16224 0t0 TCP 10.0.0.8:58604->79.171.26.34:https (ESTABLISHED)


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios