在 CentOS 系统中,端口占用是一个常见但重要的问题,无论是开发、调试还是系统管理,了解如何查看和管理端口占用情况都是至关重要的,本文将详细介绍如何在 CentOS 中查看端口占用情况,以及如何处理这些问题。
查看端口占用情况
1、使用 lsof 命令

lsof 介绍:lsof(list open files)是一个列出当前系统打开文件的工具,由于 Linux 系统中几乎所有东西都以文件的形式存在,lsof 可以用来查看网络连接和端口的使用情况。
语法:lsof i:[端口号]
要查看 3306 端口的占用情况,可以使用以下命令:
lsof i:3306输出示例如下:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 26475 root 10u IPv4 37999514 0t0 TCP *:3306 (LISTEN) 可以看到,3306 端口被mysqld 服务占用。
2、使用 netstat 命令

netstat 介绍:netstat 是一个强大的命令行工具,用于显示网络连接、路由表、接口统计等信息,它在排查网络问题和查看系统网络状态时非常有用。
安装 nettools 包:在 CentOS 7 及更高版本中,netstat 命令属于 nettools 包,如果系统中没有安装该包,可以通过以下命令进行安装:
sudo yum install nettools语法:
查看所有活动的端口:
netstat tuln查看特定端口,80 端口:
netstat tuln | grep :80选项说明:

t:显示 TCP 协议的端口。
u:显示 UDP 协议的端口。
l:仅列出监听端口。
n:以数字形式显示地址和端口号。
3、使用 ss 命令
ss 介绍:ss 是 iproute2 软件包的一部分,它是 netstat 的一个现代替代品,提供了更快和更详细的网络信息。
语法:
查看所有活动的端口:
ss tuln查看特定端口,80 端口:
ss tuln | grep :80选项说明:
t:显示 TCP 协议的端口。
u:显示 UDP 协议的端口。
l:仅列出监听端口。
n:以数字形式显示地址和端口号。
处理端口占用问题
1、查找并杀死进程
通过进程 ID 杀死进程:使用kill 9 PID 命令彻底结束占用端口的进程,要杀死占用 3306 端口的进程:
kill 9 26475通过进程名称杀死进程:首先使用ps 命令找到进程 ID,然后使用kill 命令结束进程,要杀死名为httpd 的进程:
ps aux | grep httpd
kill 9 [PID]2、重启相关服务
重启服务:有时,重新启动相关服务可以解决端口占用问题,重启 Apache 服务:
service httpd restart开启和关闭端口
1、开启端口
使用 iptables 开启端口:
/sbin/iptables I INPUT p tcp dport 80 j ACCEPT保存修改并重启防火墙:
/etc/init.d/iptables save
service iptables restart直接修改 iptables 配置文件:编辑/etc/sysconfig/iptables 文件,添加以下语句:
A INPUT p tcp m state state NEW m tcp dport 80 j ACCEPT重启防火墙:
service iptables restart2、关闭端口
使用 iptables 关闭端口:
/sbin/iptables I INPUT p tcp dport 80 j DROP保存修改并重启防火墙:
/etc/init.d/iptables save
service iptables restart直接修改 iptables 配置文件:编辑/etc/sysconfig/iptables 文件,添加以下语句:
A INPUT p tcp m state state NEW m tcp dport 80 j DROP重启防火墙:
service iptables restart1、常用命令归纳:
查看端口占用情况:lsof i:[端口号]、netstat tuln | grep [端口号]、ss tuln | grep [端口号]
杀死进程:kill 9 [PID]、service [服务名] restart
开启端口:iptables I INPUT p tcp dport [端口号] j ACCEPT、service iptables restart
关闭端口:iptables I INPUT p tcp dport [端口号] j DROP、service iptables restart
2、注意事项:
确保以 root 用户或具有适当权限的用户身份执行这些命令。
谨慎操作kill 命令,避免误杀重要进程。
修改防火墙规则后,及时保存并重启防火墙,以确保配置生效。
常见问题解答(FAQs)
1、Q: 如果我希望查看某个特定服务的端口占用情况,应该怎么做?:
A: 你可以使用lsof i:[端口号] 或netstat tuln | grep [端口号] 来查看特定端口的占用情况,这将显示哪个服务或进程在使用该端口。
2、Q: 我如何知道哪个进程占用了特定的端口?:
A: 你可以使用lsof i:[端口号] 来查看哪个进程占用了特定的端口,该命令会列出与该端口相关的进程信息,包括进程 ID(PID)和进程名称,你也可以使用netstat tulnp | grep [端口号] 来获取类似的信息。
