HCRM博客

CentOS7下使用lsof查找端口对应服务名的技巧

CentOS7 lsof命令查找端口对应服务名

CentOS7下使用lsof查找端口对应服务名的技巧-图1

端口被哪个进程偷偷占用?在 CentOS7 上,**lsof -i:端口号** 一条命令就能揪出幕后服务。别急着重启机器,先学会这一招,省下半个小时排障时间。

CentOS7下使用lsof查找端口对应服务名的技巧-图2

为什么必须用 lsof 而不是 netstat

netstat 已经默认不装,lsof 自带详细信息,**PID、用户、协议、服务名一次给全**。更重要的是,它能直接反向查询:已知端口,瞬间定位进程路径,再顺藤摸瓜找到启动脚本。

安装与首次运行

最小化安装的 CentOS7 可能没带 lsof,**yum -y install lsof** 十秒搞定。首次执行建议加 sudo,避免权限不足看不到完整列表。

一条命令格式记一辈子

sudo lsof -i :3306

CentOS7下使用lsof查找端口对应服务名的技巧-图3

回车后立刻呈现四列关键信息:COMMAND、PID、USER、NAME。NAME 列把本地地址与端口拼在一起,**0.0.0.0:3306 表示全网监听**,127.0.0.1:3306 仅本地回环。

被占用却看不到服务名?这样破

有时输出里 COMMAND 是 java、python 这类通用词,看不出业务含义。接着执行 ls -lh /proc/PID/exe,**软链接会指向真实可执行文件**,比如 /opt/mysqld。若 exe 指向已删除文件,**rm 未重启的进程就是元凶**,直接重启服务即可释放端口。

UDP 端口同样适用

别误以为 lsof 只能查 TCP,**lsof -i UDP:514** 一样能把 syslog-ng 揪出来。加上 **-n -P** 参数禁用反向解析,速度再快两成,脚本里批量巡检尤其好用。

批量扫描常用端口

把下面三行写进脚本,**5 秒钟完成 22、80、443、3306、6379、8080 全检测**:

for port in 22 80 443 3306 6379 8080; do

echo === $port ===

sudo lsof -i :$port | grep LISTEN

done

输出为空即端口闲置,**非空行立刻给出 PID**,KILL 或调整配置随你挑。

防火墙与 SELinux 别背锅

很多新手端口不通就怪 firewall-cmd,**先用 lsof 确认本地是否监听**,再谈放行。若本地无监听,加规则也是徒劳;**若本地已监听仍无法远程连接**,再去检查 zones 与 rich-rules。

生产环境排障实录

上周线上 8080 突然失踪,**lsof -i :8080** 发现 PID 不断变动,判定为脚本循环启动。结合 **ps -ef | grep PID** 找到启动脚本路径,**注释掉 while 段落**后世界安静。若没有 lsof,这段排查至少多花二十分钟。

常见误区一次讲清

误区一:看到 LISTEN 就以为能对外服务——**127.0.0.1 仅限本机**。

误区二:杀掉进程却不改配置,**systemctl 会秒级重启**,端口又被占用。

误区三:只看 TCP 忽略 UDP,**DNS、NTP、日志传输全走 UDP**,漏掉等于白查。

把命令拆成可记忆口诀

“**sudo lsof -i :端口**

**exe 路径看进程**

**无结果即闲置**

**有 PID 直接干**”

四句话默念三遍,**下次值班再也不用手忙脚乱翻文档**。

端口冲突不再神秘,**lsof 就是 CentOS7 的瑞士军刀**。记住格式、活用参数、结合 /proc 深挖,**五分钟定位问题,三分钟给出解决方案**,剩下的时间喝杯咖啡不香吗?

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41715.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~