4. Linux 进程和端口怎么排查
Linux 进程和端口排查,是测试工程师定位测试环境问题时非常高频的能力。很多接口访问不了、页面打不开、服务启动失败、自动化环境异常,表面看是“系统不可用”,实际上第一步都要回到两个问题:服务进程在不在?端口有没有监听?如果进程不存在,说明服务可能没启动或启动失败;如果进程存在但端口没监听,说明服务可能启动异常或配置错误;如果端口监听了但接口仍访问不了,就要继续排查网络、网关、路径、鉴权、应用日志或依赖服务。
面试中问“Linux 进程和端口怎么排查”,面试官不是让你背 ps、netstat、ss 这些命令,而是想看你有没有测试环境定位思路。你要能把命令和实际场景结合起来:测试环境部署后访问不了怎么查,接口连接拒绝怎么查,端口被占用怎么查,服务启动失败怎么查,压测时服务资源异常怎么初步判断。这样回答才有项目经验感。
一、为什么测试要懂进程和端口
大多数后端服务运行在 Linux 服务器上。一个服务是否可用,最基础的判断就是进程和端口。
比如:
- Spring Boot 服务启动后监听
8080端口; - Nginx 监听
80或443端口; - MySQL 默认监听
3306; - Redis 默认监听
6379; - Jenkins 默认可能监听
8080; - 测试 Mock 服务可能监听自定义端口。
如果页面访问不了,接口调用失败,测试不能只说“环境挂了”。你至少要能初步判断:服务是不是没有启动?端口是不是没监听?端口是不是被别的进程占用了?请求是不是打到了错误地址?
这些判断能帮助你快速区分问题是应用服务、部署配置、网络连接还是调用方式。
二、进程是什么,端口是什么
进程可以理解为正在运行的程序。比如一个 Java 后端服务启动后,会在 Linux 中产生一个 Java 进程。
端口可以理解为服务对外提供访问的入口。比如后端服务监听 8080,浏览器或接口工具访问 http://ip:8080/api/login 才能到达这个服务。
两者关系是:进程负责运行服务,端口负责对外提供访问。如果进程都没有,端口通常也不会监听;如果进程存在但端口不监听,可能是服务启动过程异常、端口配置不对或服务未成功初始化。
三、查看进程常用命令
1. ps 查看进程
常用命令:
ps -ef | grep java
这可以查看 Java 相关进程。比如服务是 Java 应用,就可以看是否有对应 jar 包运行。
如果知道服务名,也可以搜索服务名:
ps -ef | grep order-service
结果中通常能看到启动用户、进程 ID、启动命令、jar 包路径或启动参数。
2. top 查看资源占用
top
top 可以查看 CPU、内存占用较高的进程。测试环境接口突然变慢时,可以先用 top 看是否某个进程 CPU 或内存异常。
但要注意,top 只是初步观察。真正性能瓶颈还要结合应用日志、数据库、监控、链路追踪一起分析。
3. kill 终止进程
测试环境中偶尔需要停止进程,例如服务卡死或端口被占用。
kill PID
如果普通 kill 不生效,可能会看到有人用:
kill -9 PID
但面试时要注意表达:测试人员不能随便杀进程,尤其是共享测试环境。要先确认进程归属、影响范围,必要时和开发或运维确认。
四、查看端口常用命令
1. ss 查看端口
现在很多 Linux 环境推荐用 ss:
ss -lntp | grep 8080
含义大致是:
-l:查看监听端口;-n:以数字形式显示端口;-t:TCP;-p:显示进程信息。
如果能看到 8080 处于 LISTEN 状态,说明端口正在监听。
2. netstat 查看端口
老环境常用:
netstat -lntp | grep 8080
如果系统没有安装 netstat,可以用 ss 替代。
3. lsof 查看端口占用
有些环境可以用:
lsof -i:8080
它能看到哪个进程占用了 8080 端口。端口被占用导致服务启动失败时,这个命令很有用。
五、接口访问不了怎么排查
这是最常见的项目场景。
假设接口访问:
http://test.example.com:8080/api/login
返回连接失败或无法访问,可以按下面步骤排查。
第一步:确认地址和端口
先确认访问地址、端口、接口路径是否正确。很多问题只是环境地址写错、端口写错、访问了旧环境。
第二步:确认服务进程
ps -ef | grep java
ps -ef | grep login-service
如果进程不存在,说明服务可能没启动。要看启动脚本、启动日志或部署日志。
第三步:确认端口监听
ss -lntp | grep 8080
如果端口没有监听,说明服务没有成功对外提供访问。可能是服务启动失败,也可能配置的端口不是 8080。
第四步:查看应用日志
如果进程存在但接口报错,要看应用日志:
tail -n 200 application.log
grep "ERROR" application.log
第五步:继续排查网关和网络
如果端口监听正常,本机访问正常,但外部访问不了,就要考虑防火墙、Nginx、网关、域名解析、网络策略或容器端口映射。
六、端口被占用怎么排查
服务启动失败时,日志里可能出现:
Port 8080 already in use
这说明端口被占用。可以查:
ss -lntp | grep 8080
lsof -i:8080
找到占用端口的进程后,要先确认它是什么服务。如果是旧版本服务未停止,可以和开发确认后停止旧进程;如果是其他服务占用,就不能随便杀。
处理思路:
- 查端口占用;
- 确认占用进程;
- 判断是否为旧服务或误启动服务;
- 备份必要信息;
- 停止或修改端口配置;
- 重启服务并验证端口监听;
- 回归相关接口。
面试可以这样讲:
如果服务启动失败提示端口被占用,我会用
ss -lntp或lsof -i:端口查看哪个进程占用了端口,再通过ps -ef确认进程启动命令和服务归属。不会直接 kill,先确认是否是旧服务或其他依赖服务,确认后再处理。
七、服务进程存在但接口还是失败怎么办
进程存在不代表服务可用。可能有这些情况:
- 服务启动了一半,内部初始化失败;
- 端口没有监听;
- 数据库连接失败;
- Redis、MQ 等依赖不可用;
- 配置文件加载错误;
- 接口路径访问错误;
- 网关或 Nginx 转发配置错误;
- 鉴权失败;
- 服务内部业务异常。
所以进程只是第一层判断。下一步还要看端口、日志、接口响应、依赖服务和配置。
八、Docker 环境中的进程和端口
如果服务部署在 Docker 容器中,排查思路类似,但命令不同。
查看容器:
docker ps
查看容器端口映射:
docker ps | grep order-service
查看容器日志:
docker logs -f 容器ID
进入容器:
docker exec -it 容器ID /bin/bash
Docker 场景要特别关注端口映射。例如容器内部服务监听 8080,但宿主机可能映射成 18080。如果访问错端口,就会出现连接失败。
九、常见问题定位案例
案例 1:接口连接拒绝
现象:Postman 调接口提示 connection refused。
排查:
- 确认 IP 和端口;
ps -ef查看服务进程;ss -lntp查看端口;- 发现端口未监听;
- 查看启动日志,发现配置文件数据库地址错误导致服务启动失败;
- 修复配置后重启服务,端口监听正常,接口恢复。
案例 2:服务启动失败
现象:部署后服务启动失败。
排查:
- 查看启动日志;
- 发现
Port 8080 already in use; - 用
lsof -i:8080查看占用进程; - 确认是旧版本服务未停止;
- 停止旧进程后重新启动;
- 回归登录和核心接口。
案例 3:页面打不开但端口正常
现象:服务端口监听正常,但页面访问 502。
排查:
- 后端端口正常;
- 本机 curl 接口正常;
- 查看 Nginx 转发配置;
- 发现 upstream 指向旧端口;
- 修改配置并 reload;
- 页面恢复。
这个案例说明端口监听正常,也不代表整个访问链路正常。
十、面试回答模板
如果面试官问“Linux 进程和端口怎么排查”,可以这样回答:
如果测试环境接口访问不了,我会先确认访问地址、端口和接口路径是否正确。然后登录服务器,用
ps -ef | grep 服务名查看服务进程是否存在,用ss -lntp或netstat -lntp查看端口是否处于监听状态。如果进程不存在,就看启动日志;如果进程存在但端口没监听,可能是启动失败或端口配置错误;如果端口监听正常但外部访问失败,就继续排查 Nginx、网关、防火墙、容器端口映射或应用日志。遇到端口占用,会用lsof -i:端口或ss找到占用进程,确认归属后再处理,不会直接 kill。
十一、常见追问
追问:进程存在是否代表服务正常?
不一定。进程存在只能说明程序在运行,还要看端口是否监听、应用日志是否报错、接口是否能正常返回。
追问:端口监听正常但接口访问不了怎么办?
继续排查接口路径、Nginx 或网关转发、网络策略、防火墙、鉴权、应用日志和依赖服务。
追问:端口被占用怎么办?
用 ss 或 lsof 找到占用进程,再用 ps 确认进程归属。确认是旧服务或误启动后再停止,不能盲目 kill。
追问:Docker 容器里怎么查?
用 docker ps 看容器状态和端口映射,用 docker logs 看日志,用 docker exec 进入容器进一步排查。
十二、练习清单
- 用
ps -ef | grep java查看进程; - 用
ss -lntp | grep 8080查看端口; - 用
lsof -i:8080查看端口占用; - 用
top查看资源占用; - 模拟服务未启动时的排查流程;
- 模拟端口被占用时的排查流程;
- 查看服务启动日志;
- 区分进程存在和服务可用;
- 理解 Docker 端口映射;
- 准备一段进程端口排查面试回答。
进程和端口排查,是测试环境问题定位的第一步。面试时不要只背命令,要按“地址确认 -> 进程 -> 端口 -> 日志 -> 网关/网络 -> 回归”的顺序讲,这样才像真实项目经验。
配套刷题:

