我正在尝试使用NTP更新我的计算机上的时间。但是,这给了我一个错误:
host # ntpdate ntp1.example.org
10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting
错误“套接字正在使用”是什么意思?我如何查看该套接字在使用什么?
这是在我的CentOS 4.x系统上发生的,但我也在FreeBSD 7.x,Ubuntu 10.04和Solaris 10上看到了。
我正在尝试使用NTP更新我的计算机上的时间。但是,这给了我一个错误:
host # ntpdate ntp1.example.org
10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting
错误“套接字正在使用”是什么意思?我如何查看该套接字在使用什么?
这是在我的CentOS 4.x系统上发生的,但我也在FreeBSD 7.x,Ubuntu 10.04和Solaris 10上看到了。
Answers:
你可以做
lsof -n | grep -i "TCP\|UDP" | grep -v "ESTABLISHED\|CLOSE_WAIT"
查看所有侦听端口,但可以查看运行ntpd的甜甜圈的价格:
service ntpd status
至于“使用中的插座”是什么意思?如果可以宽恕我的皱纹(对于最基本的解释,我为您的补救措施很抱歉),那么... TCP / IP(互联网的语言)指定每台计算机都有一个IP地址,在互联网上唯一标识该计算机。此外,每个IP地址上可以连接65,000个编号的端口。
当您想连接到Web服务器时,可以在浏览器中打开该站点,但是实际上下面的机器将您连接到Web服务器IP上的端口80。Web服务器的守护程序(监听端口80连接的程序)使用“套接字”保持打开该端口,并为其保留。一次只有一个程序可以使用同一端口。
由于您正在运行ntpd,因此它正在使用该端口。“ ntpdate”试图访问该端口,但是由于该端口已经保持打开状态,因此出现“套接字已在使用”错误。
编辑也
更改为同时考虑UDP
Isof
命令我的CentOS 7
您还可以使用netstat查找打开的套接字-比其他海报建议的使用lsof干净得多。以root身份尝试此命令行
netstat -lp -u -t
查看所有监听连接,包括其关联的pid和程序。-l参数指定侦听连接,-p指定您要查看PID /名称,-t和-u告诉netstat您仅需要TCP和UDP连接(IPv4和IPv6)。
如果要查看数字端口和主机名(例如,对于主机,则不解析,对于端口,则不转换为服务名),可以添加-n
到上面的命令行中。
编辑:这在Linux上有效-我不知道它在BSD上的效果如何,因为我周围没有任何基于BSD的盒子。
netstat --listen --programs --udp --tcp
| grep LISTEN
,但是不包括UDP连接。但是否则,我认为FreeBSD上的等效标志为:netstat -p udp -p tcp -a
,但netstat -a
可能更简单。
以root用户身份执行以下操作:
lsof | grep IPv4 | grep LISTEN
这将向您显示在IPv4套接字上侦听的所有进程。您可能需要添加-b
以防止lsof
执行某些可能会阻止它的操作。如果这样做,您可能还想重定向stderr
到/dev/null
。
sudo lsof |grep UDP
查看UDP数据包。
您可以使用lsof
查找哪个应用程序正在使用此套接字。
对于FreeBSD,请使用该-u
开关,以便ntpdate
改为使用非特权端口。
喜欢: ntpdate -v -b -u 0.freebsd.pool.ntp.org
用man ntpdate
看什么-v
和-b
做。
-u
选项,因为它来自ntp.org,我想大多数系统都可以。