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 "el socket está en uso"? ¿Cómo puedo ver qué está usando este zócalo?
Esto sucede en mi sistema CentOS 4.x, pero también lo veo en FreeBSD 7.x, Ubuntu 10.04 y Solaris 10.
networking
process
freebsd
open-files
Stefan Lasiewski
fuente
fuente
Respuestas:
Tu puedes hacer
para ver todos sus puertos de escucha, pero dólares para donas que se está ejecutando ntpd:
Y en cuanto a "¿Qué significa socket en uso"? Si se me puede perdonar por suavizar algunas arrugas (y para la explicación muy básica, las disculpas de la mayoría de esto es un remedio para usted) ... TCP / IP (el idioma 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 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ía ntpd ejecutándose, estaba usando ese puerto. 'ntpdate' intentó acceder a ese puerto, pero como ya estaba abierto, recibió el error 'socket ya en uso'.
Editar
cambiado para tener en cuenta UDP también
fuente
Isof
comando en mi CentOS 7.También puede usar netstat para buscar tomas abiertas: es mucho más limpio que usar lsof como lo 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 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 decirle a netstat que solo desea conexiones TCP y UDP (IPv4 e IPv6).
Si desea ver los puertos numéricos 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 agregarlos
-n
a la línea de comandos anterior.EDITAR: Esto funciona en Linux: no sé qué tan bien funciona en BSD, ya que no tengo ningún cuadro basado en BSD.
fuente
netstat --listen --programs --udp --tcp
| grep LISTEN
, pero eso excluye las conexiones UDP. Pero de lo contrario, creo que las banderas equivalentes en FreeBSD son:,netstat -p udp -p tcp -a
peronetstat -a
podrían ser más simples.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 alguna razón). Para obtener una lista de todos los programas con escucha de sockets IPv4:
fuente
Como root, haz esto:
Esto le mostrará todos los procesos que están escuchando en sockets IPv4. Es posible que desee agregar
-b
para evitarlsof
hacer algunas cosas que podrían bloquearlo. Si lo haces, probablemente también quieras redirigirstderr
a/dev/null
.fuente
sudo lsof |grep UDP
para ver los paquetes UDP.Puede usar
lsof
para encontrar qué aplicación está usando este socket.fuente
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
fuente
Con FreeBSD, use el
-u
conmutador para quentpdate
use un puerto sin privilegios.Me gusta:
ntpdate -v -b -u 0.freebsd.pool.ntp.org
Use
man ntpdate
para ver qué-v
y qué-b
hace.fuente
-u
opción, ya que es de ntp.org, imagino que la mayoría de los sistemas lo tienen.