如何检查我的计算机上打开/关闭的端口?
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:$1 | grep LISTEN`
}
现在运行“pslisten 5060”来查看谁在抢占我的 SIP 端口。
它也适用于 Apple Mac OS X。
答案4
另一个选择是党卫军。使用起来更加方便....
以下命令将仅输出当前监听套接字的列表。
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 :::*