在CentOS系统中,查看端口的占用情况和开放状态是系统管理和网络故障排查中的重要步骤,以下是几种常用的方法来查看和管理CentOS系统中的端口:
一、使用lsof命令

1、查看指定端口的占用情况:
语法:lsof i:端口号
示例:lsof i:3306
输出结果会显示占用该端口的进程信息,包括命令、进程ID、用户、文件描述符类型等。
2、其他lsof命令用法:
lsof i:8080:查看8080端口占用情况。

lsof abc.txt:显示开启文件abc.txt的进程。
lsof c abc:显示abc进程现在打开的文件。
lsof c p 1234:列出进程号为1234的进程所打开的文件。
lsof g gid:显示归属gid的进程情况。
lsof +d /usr/local/:显示目录下被进程开启的文件。
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长。

lsof d 4:显示使用fd为4的进程。
lsof i U:显示所有打开的端口和UNIX domain文件。
二、使用netstat命令
1、查看指定端口的占用情况:
语法:netstat tunlp | grep 端口号
示例:netstat tunlp | grep 3306
输出结果会显示占用该端口的进程信息,包括协议、接收队列、发送队列、本地地址、外部地址、连接状态以及进程ID和进程名称。
2、其他netstat命令用法:
netstat ntlp:查看当前所有tcp端口。
netstat ntulp | grep 80:查看所有80端口使用情况。
netstat ntulp | grep 3306:查看所有3306端口使用情况。
三、使用firewallcmd命令
1、查看已开放的端口:
语法:firewallcmd listports
示例:无特定示例,直接执行命令即可查看已开放的端口。
2、开放单个端口:
语法:firewallcmd zone=public addport=端口号/tcp permanent
示例:firewallcmd zone=public addport=8080/tcp permanent
注意:开放后需要重启防火墙才生效。
3、开放多个端口:
语法:firewallcmd zone=public addport=端口范围/tcp permanent
示例:firewallcmd zone=public addport=2000029999/tcp permanent
注意:同样需要重启防火墙才生效。
4、关闭端口:
语法:firewallcmd zone=public removeport=端口号/tcp permanent
示例:firewallcmd zone=public removeport=8080/tcp permanent
注意:关闭后需要重启防火墙才生效。
5、查看端口是否打开:
语法:firewallcmd zone= public queryport=80/tcp
示例:无特定示例,直接执行命令即可查询端口是否打开。
相关问答FAQs
1、如何彻底结束占用某个端口的进程?
回答:你可以使用kill命令来结束进程,使用lsof i:端口号或netstat tunlp | grep 端口号找到占用该端口的进程ID(PID),然后使用kill 9 PID命令来结束该进程,要结束占用3306端口的进程,可以执行以下命令:
```bash
kill 9 26475
```
26475是占用3306端口的进程ID。
2、如何在CentOS中永久开放一个端口?
回答:你可以使用firewallcmd命令来永久开放一个端口,执行以下命令来添加端口:
```bash
firewallcmd zone=public addport=端口号/tcp permanent
```
重启防火墙以使更改生效:
```bash
firewallcmd reload
```
或者,你也可以编辑/etc/sysconfig/iptables配置文件,添加相应的规则,然后保存并重启防火墙。
