Estou tentando usar o NTP para atualizar o horário na minha máquina. No entanto, isso me dá um erro:
host # ntpdate ntp1.example.org
10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting
O que significa o erro "soquete em uso"? Como posso ver o que está usando esse soquete?
Isso acontece no meu sistema CentOS 4.x, mas também o vejo no FreeBSD 7.x, Ubuntu 10.04 e Solaris 10.
networking
process
freebsd
open-files
Stefan Lasiewski
fonte
fonte
Respostas:
Você pode fazer
para ver todas as suas portas de escuta, mas dólares para donuts que o ntpd está executando:
E quanto a "O que o soquete em uso" significa? Se eu puder ser perdoado por suavizar algumas rugas (e pelas explicações muito básicas, desculpas pela maior parte disso são reparadoras para você) ... TCP / IP (o idioma da Internet) especifica que cada computador tem um endereço IP, que identifica exclusivamente esse computador na internet. Além disso, existem 65.000 portas numeradas em cada endereço IP que pode ser conectado.
Quando você deseja se conectar a um servidor da web, abre o site no navegador, mas o equipamento abaixo está realmente conectando você à porta 80 no IP do servidor da web. O daemon do servidor da Web (o programa que atende conexões à porta 80) usa um "soquete" para manter aberta essa porta, reservando-a para si mesma. Somente um programa pode usar a mesma porta por vez.
Como você tinha o ntpd em execução, ele estava usando essa porta. O 'ntpdate' tentou acessar essa porta, mas como ela já estava aberta, você obteve o erro 'soquete já está em uso'.
Editar
Alterado para Contabilizar UDP Também
fonte
Isof
comando no meu CentOS 7. #Você também pode usar o netstat para procurar soquetes abertos - é muito mais limpo do que usar lsof, como os outros pôsteres sugeriram. Experimente esta linha de comando como root
netstat -lp -u -t
para visualizar todas as conexões de escuta, incluindo seus pid's e programas associados. O parâmetro -l é o que especifica as conexões de escuta, -p especifica que você deseja ver o PID / nome e -t e -u informam ao netstat que deseja apenas conexões TCP e UDP (IPv4 e IPv6).
Se você deseja ver os nomes de porta e host numéricos (ou seja, não resolvidos no caso de hosts e não transformados em nomes de serviço no caso de portas), você pode adicionar
-n
à linha de comando acima.EDIT: Isso funciona no Linux - eu não sei o quão bem ele funciona no BSD, pois não tenho caixas baseadas em BSD.
fonte
netstat --listen --programs --udp --tcp
| grep LISTEN
, mas exclui as conexões UDP. Mas, caso contrário, acho que as bandeiras equivalentes no FreeBSD são:,netstat -p udp -p tcp -a
masnetstat -a
podem ser mais simples.No FreeBSD, você também pode usar o sockstat caso lsof não funcione para você (por exemplo, em sistemas virtualizados que não possuem / dev / mem por qualquer motivo). Para obter uma lista de todos os programas que escutam soquetes IPv4:
fonte
Como root, faça o seguinte:
Isso mostrará todos os processos que estão escutando nos soquetes IPv4. Você pode adicionar
-b
para impedir que vocêlsof
faça algumas coisas que possam bloqueá-lo. Se você fizer isso, provavelmente também desejará redirecionarstderr
para/dev/null
.fonte
sudo lsof |grep UDP
para ver pacotes UDP.Você pode usar
lsof
para descobrir qual aplicativo está usando esse soquete.fonte
Brincando com este três-em-um no OS X 10.9.5:
sudo lsof | grep \ IPv | sort ; clear ; sudo lsof -U ; clear ; sudo netstat -a
fonte
Com o FreeBSD, use o
-u
switch parantpdate
usar uma porta sem privilégios.Gostar:
ntpdate -v -b -u 0.freebsd.pool.ntp.org
Use
man ntpdate
para ver o que-v
e-b
faz.fonte
-u
opção, já que é do ntp.org, eu imagino que a maioria dos sistemas o tenha.