先确认lsof是否安装,再用sudo lsof -i :端口号 -p -n查占用进程,最后kill -9 pid释放端口。

如果您在麒麟操作系统中启动服务时提示“Address already in use”,或无法绑定指定端口,则可能是由于该端口已被其他进程占用。以下是解决此问题的步骤:
一、确认lsof命令是否已安装
麒麟OS多数版本默认预装lsof,但部分精简镜像可能未包含该工具。需先验证其存在性,并在缺失时进行安装,确保后续排查可正常执行。
1、打开终端,执行命令检查lsof是否存在及版本信息:lsof -v
2、若提示command not found,则需手动安装:
3、对于麒麟V10(基于Debian/Ubuntu系):sudo apt-get update && sudo apt-get install lsof
4、对于麒麟V10(基于CentOS/RHEL系):sudo yum install lsof 或 sudo dnf install lsof
二、查看指定端口被哪些进程占用
该方法直接定位监听或连接指定端口的活跃进程,适用于服务启动失败、端口冲突等典型场景,输出中PID和COMMAND字段为关键判断依据。
1、查询TCP端口8080的占用情况:sudo lsof -i :8080 -P -n
2、查询UDP端口53的占用情况:sudo lsof -iUDP:53 -P -n
3、仅列出处于LISTEN状态的TCP进程:sudo lsof -iTCP -sTCP:LISTEN -P -n
4、结合grep精确过滤关键词(如MySQL默认端口):sudo lsof -i :3306 -P -n | grep LISTEN
三、查看所有监听端口及其对应进程
该方式用于全局掌握系统当前开放的监听服务,便于发现未知或异常监听行为,避免遗漏隐蔽端口占用。
1、列出全部监听状态的网络连接:sudo lsof -i -sTCP:LISTEN -P -n
2、仅显示监听端口、进程名与PID(简洁格式):sudo lsof -i -sTCP:LISTEN -P -n | awk '{print $1, $2, $9}'
3、排除IPv6地址以加快输出并聚焦IPv4服务:sudo lsof -i4 -sTCP:LISTEN -P -n
四、按用户或进程名筛选端口占用
在多用户环境或服务密集部署中,可通过归属维度快速缩小排查范围,避免遍历全部进程,提升定位效率。
1、列出用户root所有监听或连接网络的进程:sudo lsof -i -u root -P -n
2、查找所有名为nginx的进程所占用的端口:sudo lsof -i -c nginx -P -n
3、仅显示sshd进程相关的网络连接:sudo lsof -i -c sshd -P -n | grep -E "(LISTEN|ESTABLISHED)"
五、终止占用端口的进程(谨慎操作)
在确认目标进程非系统关键服务后,可安全终止其运行以释放端口。操作前务必核对COMMAND、USER及NAME字段,防止误杀。
1、从lsof输出中提取占用8080端口的PID(例如为12345):sudo lsof -t -i :8080
2、向该PID发送标准终止信号:kill 12345
3、如进程未响应,强制终止:kill -9 12345
4、一键终止所有占用8080端口的进程(高危,请先验证):sudo lsof -t -i :8080 | xargs kill -9











