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.logCOMMAND 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 542COMMAND 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
shell> lsof -i :22COMMAND 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:3306COMMAND 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 :22COMMAND 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 -i4COMMAND 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