我在命令行上使用了
netstat -a
。端口状态“ LISTENING”是否指示该端口是打开的吗?
是否有任何端口(未在输出中显示)已关闭?
#1 楼
netstat
的一些参数对此有用:-l
或--listening
仅显示当前正在监听传入连接的套接字。-a
或--all
显示当前使用的所有插槽。-t
或--tcp
显示tcp插槽。-u
或--udp
显示udp插槽。-n
或--numeric
将主机和端口显示为数字,而不是解析dns并查看/ etc / services。您可以将它们混合使用以获取所需的内容。要了解当前正在使用的端口号,请使用以下端口号之一:
netstat -atn # For tcp
netstat -aun # For udp
netstat -atun # For both
在输出中提到的所有端口都在使用中,用于侦听传入连接或已连接到对等端口**,所有其他端口均已关闭。 TCP和UDP端口为16位宽(它们从1-65535开始)
**它们也可以与对等方建立连接/断开连接。
#2 楼
您可以使用以下命令:netstat -tulnp | grep <port no>
如果它显示了已使用的某些进程。如果没有输出,则将其关闭(不使用)。
#3 楼
另一个易于使用的备用命令行可以找出哪个进程正在使用端口:lsof -n -i4TCP:$PORT | grep LISTEN
我在.bash_profile中添加了下一个函数,
function pslisten {
echo `lsof -n -i4TCP: | grep LISTEN`
}
,现在运行“ pslisten 5060”来查看谁在抢我的SIP端口。
它也可以与Apple Mac OS X一起使用。
#4 楼
端口状态“ LISTENING”是否指示该端口已打开?
是。这意味着某些服务正在侦听计算机上的该端口以进行传入连接,即该端口已打开以建立新的连接。
输出中未显示的任何端口都表明该端口正在
是的。请记住,
netstat -a
将显示所有主动(侦听)和被动(非侦听)连接,即同时充当服务器(某些服务正在侦听这些端口以获取来自不同机器/进程的连接)的端口并已建立(在这些端口(无论主机/服务可以是服务器还是客户端)都无关。所有TCP和UDP端口都属于称为套接字的类别,并且其中有很多。要查看套接字信息,可以检查
man ss
。评论
谢谢。您写道-a表示服务器并已建立。 “服务器”是否表示某些服务正在侦听的端口? “已建立”是否表示存在现有连接的端口,而不管它是客户端还是服务器的端口?那么-a不显示哪种端口?
– Tim
18年8月21日在19:28
我不认为-a选项表示“所有活动”套接字;它只是意味着“全部”。 netstat默认情况下显示所有活动套接字,但不包括被动套接字(打开,侦听)。通过使用-a选项,可以显示主动和被动套接字。
– Egon Olieux
18-09-22在8:28
@EgonOlieux谢谢。我纠正了;编辑答案。
–heemayl
18-09-24在20:20
@heemayl答案的第二部分仍然不正确。处于“正在侦听”状态的TCP套接字永远不能成为连接。它没有连接任何东西,只是在监听。因此,侦听TCP套接字也称为被动套接字。如果客户端尝试连接到服务器上的(侦听)套接字,则会在服务器上创建一个新的套接字以与客户端建立连接。作为已建立连接的一部分的套接字称为活动套接字。
– Egon Olieux
18-09-25在20:37
#5 楼
另一个选择是ss。它更容易使用。...下面的命令将仅输出当前监听套接字的列表。
root@server:~# ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_dgr UNCONN 0 0 * 23353 * 23352
u_dgr UNCONN 0 0 * 568 * 362
u_dgr UNCONN 0 0 * 14836 * 14837
u_dgr UNCONN 0 0 * 20446 * 369
u_dgr UNCONN 0 0 * 22877 * 369
u_dgr UNCONN 0 0 * 504 * 347
u_dgr UNCONN 0 0 * 16298 * 369
u_dgr UNCONN 0 0 * 23343 * 369
u_dgr UNCONN 0 0 * 24125 * 369
u_dgr UNCONN 0 0 * 24617 * 369
u_dgr UNCONN 0 0 * 23352 * 23353
u_dgr UNCONN 0 0 * 23334 * 369
u_dgr UNCONN 0 0 * 17113 * 369
u_dgr UNCONN 0 0 * 16957 * 369
u_dgr UNCONN 0 0 * 14793 * 362
u_dgr UNCONN 0 0 * 23345 * 362
u_dgr UNCONN 0 0 * 24070 * 369
udp UNCONN 0 0 *:sunrpc *:*
udp UNCONN 0 0 *:981 *:*
udp UNCONN 0 0 :::sunrpc :::*
udp UNCONN 0 0 :::981 :::*
tcp LISTEN 0 128 127.0.0.1:85 *:*
tcp LISTEN 0 128 *:ssh *:*
tcp LISTEN 0 128 *:3128 *:*
tcp LISTEN 0 100 127.0.0.1:smtp *:*
tcp LISTEN 0 128 *:8006 *:*
tcp LISTEN 0 128 *:sunrpc *:*
tcp LISTEN 0 128 :::ssh :::*
tcp LISTEN 0 100 ::1:smtp :::*
tcp LISTEN 0 128 :::sunrpc :::*
评论
我不知道这一点,谢谢zee
–尼克·福克斯
18年2月8日在10:19
#6 楼
否则使用手表可能会有所帮助,然后随心所欲地欣赏。sudo watch -d -n0 "netstat -atnp | grep ESTA"
sudo watch -d -n0 "netstat -tulnp | grep ESTA"
评论
-a与-l冲突,-a捕获所有已建立或侦听的消息,-l只是捕获侦听的消息,因此实际上它是'-ltnp'tcp,'-lunp'udp或'-ltunp'tcp + udp
–ModerateJavaScriptDev
17年7月2日在23:31
#7 楼
实际上,有更好的方法来查看您打开了哪些端口。netstat
或lsof
的问题在于它们查询网络堆栈,实际上不连接至计算机,而是尝试查看系统上正在运行的内容。更好的方法是像这样使用nmap
:nmap -sT -O localhost
查看打开的端口。
#8 楼
尝试此操作以获取该范围内打开的端口的列表。
for p in {1..1023}
do
(echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open"
done
这条命令将显示它是什么!
cat /etc/services | grep {PORTNumber}
评论
在AskUbuntu上查看此帖子!。@Justgivemeaname:nmap是用于检查另一台主机上开放端口的工具。如果您可以在一台机器上运行netstat,则使用它会更快,更可靠。
@DavidFoerster:不知道netstat,所以我知道了。它在链接中说,但是应该从另一个主机使用它。谢谢!
如何查看我的计算机上打开了哪些端口的可能重复项?