Linux ➾ 端口占用检查
🔻 前言
🔻 一、什么是监听端口
监听端口是指在计算机网络通信中,通过指定一个特定的端口号,使得计算机可以监听该端口上的网络通信请求。当计算机监听某个端口时,它会不断地检查该端口上是否有传入的网络连接请求,如果有则会接受连接并进行相应的处理。
监听端口通常用于服务器程序,服务器程序需要监听特定的端口号,以便能够接受客户端的连接请求并提供相应的服务。例如,Web服务器通常会监听80端口,SMTP服务器监听25端口,FTP服务器监听21端口等。
每个监听端口都可以使用防火墙打开或关闭(过滤)。
不能同时让两个服务监听同一IP地址上的同一端口。
🔻 二、使用lsof命令查看端口占用情况
lsof是一个用于查看系统打开的文件和进程的工具。通过结合-i参数,我们可以只查看特定端口的相关信息。
sudo lsof -i:<端口号>
这里的<端口号>是要查找的具体端口号。例如,要查看占用端口号为80的进程,可以运行:
sudo lsof -i:80
或者
sudo lsof -nP -iTCP:80 -sTCP:LISTEN
执行命令后,终端会显示占用指定端口的进程的相关信息,包括进程ID(PID)和进程名称。
查看所有侦听TCP端口的列表:
sudo lsof -i
或者
sudo lsof -nP -iTCP -sTCP:LISTEN
🔻 三、使用netstat命令检查监听端口
netstat是一个命令行工具,可以提供有关网络连接的信息。
列出所有正在侦听的TCP或UDP端口,包括使用端口的服务和套接字状态,可以运行:
sudo netstat -tunlp
使用 grep命令过滤结果。例如,要查找在TCP端口22上侦听的进程,可以运行:
sudo netstat -tnlp | grep :22
还可以根据其他条件过滤,例如PID,协议,状态等。
###过滤tcp协议
sudo netstat -tnlp | grep tcp
###过滤httpd服务
sudo netstat -tnlp | grep httpd
###过滤856进程
sudo netstat -tnlp | grep 856
###过滤LISTEN状态
sudo netstat -tnlp | grep LISTEN
🔻 四、使用ss 检查监听端口
ss是新的netstat。它缺少netstat的某些功能,但是公开了更多的TCP状态,并且速度稍快。
ss命令用于显示socket状态. 可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计。
它比其他工具展示等多tcp和state信息. 它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具。
列出所有正在侦听的TCP或UDP端口,可以运行:
sudo ss -tunlp
常用的ss命令:
🔻 总结—温故知新
🟢 该章详细介绍了在Linux系统中,几种常用的端口占用检查方法:使用netstat命令、lsof命令、ss命令。并给出了详细的实例,快速准确地查找占用端口的进程。