it-swarm-es.tech

¿Qué está usando este enchufe de red?

Estoy tratando de usar NTP para actualizar la hora en mi máquina. Sin embargo, me da un error:

Host # ntpdate ntp1.example.org
10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting

¿Qué significa el error "socket está en uso"? ¿Cómo puedo ver qué está usando este enchufe?

Esto sucede en mi sistema CentOS 4.x, pero también lo veo en FreeBSD 7.x, Ubuntu 10.04 y Solaris 10.

18
Stefan Lasiewski

Tu puedes hacer

lsof -n | grep -i "TCP\|UDP" | grep -v "ESTABLISHED\|CLOSE_WAIT"

para ver todos sus puertos de escucha, pero de dólares a donas que ejecuta ntpd:

service ntpd status

Y en cuanto a "¿Qué significa socket en uso" significa? Si se me puede perdonar por suavizar algunas arrugas (y por la explicación muy básica, disculpas por la mayor parte de esto es un remedio para ti) ... TCP/IP (el lenguaje de Internet) especifica que cada computadora tiene una dirección IP, que identifica de forma única a esa computadora en Internet. Además, hay 65.000 puertos numerados en cada dirección IP a los que se puede conectar.

Cuando desea conectarse a un servidor web, abre el sitio en su navegador, pero la maquinaria debajo en realidad lo está conectando al puerto 80 en la IP del servidor web. El demonio del servidor web (el programa que escucha las conexiones al puerto 80) usa un "socket" para mantener abierto ese puerto, reservándolo para sí mismo. Solo un programa puede usar el mismo puerto a la vez.

Como tenías ntpd ejecutándose, estaba usando ese puerto. 'ntpdate' intentó acceder a ese puerto, pero como ya estaba abierto, aparece el error 'socket ya en uso'.

Editar
Cambiado para tener en cuenta también UDP

20
Matt Simmons

También puede usar netstat para buscar sockets abiertos; es mucho más limpio que usar lsof como han sugerido los otros carteles. Prueba esta línea de comando como root

netstat -lp -u -t

para ver todas las conexiones de escucha, incluidos sus programas y pid asociados. El parámetro -l es lo que especifica las conexiones de escucha, -p especifica que desea ver el PID/nombre y -t y -u le dicen a netstat que solo desea TCP y conexiones UDP (IPv4 y IPv6).

Si desea ver el puerto numérico y los nombres de host (es decir, no resueltos en el caso de los hosts y no transformados en nombres de servicio en el caso de los puertos), puede agregar -n a la línea de comando anterior.

EDITAR : Esto funciona en Linux - No sé qué tan bien funciona en BSD, ya que no tengo cajas basadas en BSD.

10
B.R.

En FreeBSD, también puede usar sockstat en caso de que lsof no funcione para usted (por ejemplo, en sistemas virtualizados que no tienen/dev/mem por cualquier motivo). Para obtener una lista de todos los programas con sockets de escucha IPv4:

sockstat -l4
2
diz

Puede usar lsof para encontrar qué aplicación está usando este socket.

1
txwikinger

Como root, haz esto:

lsof | grep IPv4 | grep LISTEN

Esto le mostrará todos los procesos que están escuchando en sockets IPv4. Es posible que desee agregar -b para evitar que lsof haga algunas cosas que podrían bloquearlo. Si lo hace, probablemente también desee redirigir stderr a /dev/null.

1
kbyrd

Con FreeBSD use el -u cambiar para que ntpdate utilice un puerto sin privilegios en su lugar.

Me gusta: ntpdate -v -b -u 0.freebsd.pool.ntp.org

Utilizar man ntpdate Ver qué -v y -b hace.

0
Monti

Jugando con este tres en uno en OS X 10.9.5:

Sudo lsof | grep \ IPv | sort ; clear ; Sudo lsof -U ; clear ; Sudo netstat -a

0
Graham Perrin