¿Qué utiliza este enchufe de red?

¿Qué utiliza este enchufe de red?

Estoy intentando utilizar 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 "el enchufe está en uso"? ¿Cómo puedo ver qué está usando este socket?

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

Respuesta1

Tu puedes hacer

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

para ver todos sus puertos de escucha, pero dólares a donuts que ntpd está ejecutando:

service ntpd status

¿Y en cuanto a "¿Qué significa socket en uso"? Si se me puede perdonar por suavizar algunas arrugas (y por la explicación muy básica, las disculpas por la mayor parte de esto son correctivas para usted)... TCP/IP (el lenguaje de Internet) especifica que cada computadora tiene una dirección IP, que identifica de forma única 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 que se encuentra debajo en realidad lo conecta al puerto 80 en la IP del servidor web. El demonio del servidor web (el programa que escucha las conexiones al puerto 80) utiliza un "socket" para mantener abierto ese puerto, reservándolo para sí mismo. Sólo un programa puede utilizar el mismo puerto a la vez.

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

Editar
Cambiado para tener en cuenta UDP también

Respuesta2

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

netstat -lp -u -t

para ver todas las conexiones de escucha, incluidos sus pid y programas 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 conexiones TCP y UDP (IPv4 e IPv6).

Si desea ver los nombres numéricos de los puertos y los hosts (es decir, no resueltos en el caso de los hosts y no transformados en nombres de servicios en el caso de los puertos), puede agregarlos -na la línea de comando anterior.

EDITAR:Esto funciona en Linux; no sé qué tan bien funciona en BSD, ya que no tengo ningún sistema basado en BSD.

Respuesta3

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

sockstat -l4

Respuesta4

Puede utilizar lsofpara encontrar qué aplicación está utilizando este socket.

información relacionada