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
Isofcomando 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 -tpara 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
-na 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 -aperonetstat -apodrí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
-bpara evitarlsofhacer algunas cosas que podrían bloquearlo. Si lo haces, probablemente también quieras redirigirstderra/dev/null.fuente
sudo lsof |grep UDPpara ver los paquetes UDP.Puede usar
lsofpara 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 -afuente
Con FreeBSD, use el
-uconmutador para quentpdateuse un puerto sin privilegios.Me gusta:
ntpdate -v -b -u 0.freebsd.pool.ntp.orgUse
man ntpdatepara ver qué-vy qué-bhace.fuente
-uopción, ya que es de ntp.org, imagino que la mayoría de los sistemas lo tienen.