Linux查看端口是否占用命令

Linux系统下如何确定端口是否被占用?如何查看系统正在监听的端口有哪些?

关注系统正在监听的端口对运维人员是一件非常重要的事情,因为对外开放的端口越多,系统增加的风险就越大(后面还会写一篇系统安全的文章,记得关注我哦)。除了入侵之外,运维人员在做故障排查的时候,也需要观察端口变化。

例如:一台服务器上同时部署了Apache和Nginx,那么就必须确认他们是否是使用了TCP #80/443端口。服务宕了,就会先看端口在不在,端口不在,是不是服务停止了,被 OOM 等。

在Linux下检查被监听的端口进程


1:lsof命令

语法:

$ sudo lsof -i -P -n $ sudo lsof -i -P -n | grep LISTEN $ doas lsof -i -P -n | grep LISTEN ### [OpenBSD] ### 

举例:使用lsof命令检查监听端口和应用程序

输出的最后一行是

sshd 85379 root 3u IPv4 0xffff80000039e000 0t0 TCP 10.86.128.138:22(LISTEN) 
sshd 是应用程序的名称。10.86.128.138 是sshd应用程序绑定到的IP地址(LISTEN)22 是正在使用的TCP端口(LISTEN)85379 是sshd进程的进程ID

2:netstat命令

可以使用netstat检查端口端口和应用程序

Linux netstat语法
$ netstat -tulpn | grep LISTEN 
FreeBSD / MacOS X netstat语法
$ netstat -anp tcp | grep LISTEN $ netstat -anp udp | grep LISTEN 
OpenBSD netstat语法
$ netstat -na -f inet | grep LISTEN $ netstat -nat | grep LISTEN 

3:nmap命令

语法:

$ sudo nmap -sT -O localhost $ sudo nmap -sU -O 192.168.2.13 ##[ list open UDP ports ]## $ sudo nmap -sT -O 192.168.2.13 ##[ list open TCP ports ]## 

举例:使用nmap确定哪些端口正在侦听TCP连接

可以在单个命令中组合TCP / UDP扫描:

$ sudo nmap -sTU -O 192.168.2.13 

结束进程

根据PID kill掉相关进程:

kill -9 {PID} 

在Windows下检查被监听的端口进程


常用的检查Windows操作系统的端口使用情况命令:

netstat -bano | more netstat -bano | grep LISTENING netstat -bano | findstr /R /C:"[LISTEING]" 

举例

1.查看所有的端口占用情况

C:>netstat -ano 

2.查看指定端口的占用情况

在dos下,输入netstat -ano|findstr 8189,查看端口使用情况

3.结束该进程

输入taskkill /pid 13064 /f停止端口占用

Linux查看端口是否占用命令