lunes, 7 de diciembre de 2009

Puertos Archivos y Procesos, Que archivo o puerto usa determinado proceso.


Cuando tengas problemas en localizar el puerto que usa determinada aplicación puedes usar dos comandos:

netstat y Fuser

En el man de cada comando puedes ver la funcionalidades de cada uno.

Con el netstat puedes ver los estatus de las conexiones, conexiones abiertas, conexiones establecidas y hasta el PID del programa.

Pero cuando este comando no lo muestra, entonces usas fuser este comando te puede ayudar, identificando los procesos que usan archivos o sockets. Por ejemplo cuando se tranca el pendrive osea algun porceso lo tiene ocupado y no lo puedes sacar o expulsar(sacar a la fuerza no es correcto, se puede corromper la data)....pues buscas que proceso te esta usando el dispositivo.

Mostrar los dispositivos montados

# mount


/dev/sdb1 /mnt/Usb

# fuser /dev/sdb1
pid

y swaassss listo ahy te parece lo mandas a matar y ya.

kill pid



Otro ejemplo en la salida del comando netstat que se muestra a continuacion

msanguino@linux-2jsj:~> netstat -putan
(No info could be read for "-p": geteuid()=1000 but you should be root.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 10.20.0.13:427 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:427 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:2544 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 10.20.0.13:35574 74.125.53.91:80 ESTABLISHED -
tcp 0 0 10.20.0.13:44764 66.249.80.191:80 ESTABLISHED -
tcp 0 0 :::22 :::* LISTEN -
tcp 0 0 ::1:25 :::* LISTEN -
udp 0 0 255.255.255.255:427 0.0.0.0:* -
udp 0 0 10.20.0.13:427 0.0.0.0:* -
udp 0 0 224.0.1.22:427 0.0.0.0:* -
udp 0 0 239.255.255.253:427 0.0.0.0:* -
udp 0 0 0.0.0.0:68 0.0.0.0:* -
udp 0 0 0.0.0.0:111 0.0.0.0:* -
udp 0 0 0.0.0.0:631 0.0.0.0:*

veo que no muestra el pid del proceso que tiene abierto el puerto 111 entonces digo

fuser 111/tcp

1127

y te muestra el pid del proceso que abre el puerto,

Observacion para correr este comando solo puedes ser superusuario.