小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • Linux 测试环境精华文章

    • Linux 测试环境精华文章
    • 1. 测试面试常问 Linux 命令怎么准备
    • 2. 日志排查常用命令怎么用
    • 3. grep 查日志面试怎么讲
    • 4. Linux 进程和端口怎么排查
    • 5. 测试环境部署面试怎么讲
    • 6. Linux 文件权限怎么理解
    • 7. Docker 在测试环境中怎么用
    • 8. Docker 日志和容器问题怎么排查
    • 9. K8s 对测试工程师要掌握什么
    • 10. Linux 环境问题定位思路
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

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

找到占用端口的进程后,要先确认它是什么服务。如果是旧版本服务未停止,可以和开发确认后停止旧进程;如果是其他服务占用,就不能随便杀。

处理思路:

  1. 查端口占用;
  2. 确认占用进程;
  3. 判断是否为旧服务或误启动服务;
  4. 备份必要信息;
  5. 停止或修改端口配置;
  6. 重启服务并验证端口监听;
  7. 回归相关接口。

面试可以这样讲:

如果服务启动失败提示端口被占用,我会用 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。

排查:

  1. 确认 IP 和端口;
  2. ps -ef 查看服务进程;
  3. ss -lntp 查看端口;
  4. 发现端口未监听;
  5. 查看启动日志,发现配置文件数据库地址错误导致服务启动失败;
  6. 修复配置后重启服务,端口监听正常,接口恢复。

案例 2:服务启动失败

现象:部署后服务启动失败。

排查:

  1. 查看启动日志;
  2. 发现 Port 8080 already in use;
  3. 用 lsof -i:8080 查看占用进程;
  4. 确认是旧版本服务未停止;
  5. 停止旧进程后重新启动;
  6. 回归登录和核心接口。

案例 3:页面打不开但端口正常

现象:服务端口监听正常,但页面访问 502。

排查:

  1. 后端端口正常;
  2. 本机 curl 接口正常;
  3. 查看 Nginx 转发配置;
  4. 发现 upstream 指向旧端口;
  5. 修改配置并 reload;
  6. 页面恢复。

这个案例说明端口监听正常,也不代表整个访问链路正常。

十、面试回答模板

如果面试官问“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 进入容器进一步排查。

十二、练习清单

  1. 用 ps -ef | grep java 查看进程;
  2. 用 ss -lntp | grep 8080 查看端口;
  3. 用 lsof -i:8080 查看端口占用;
  4. 用 top 查看资源占用;
  5. 模拟服务未启动时的排查流程;
  6. 模拟端口被占用时的排查流程;
  7. 查看服务启动日志;
  8. 区分进程存在和服务可用;
  9. 理解 Docker 端口映射;
  10. 准备一段进程端口排查面试回答。

进程和端口排查,是测试环境问题定位的第一步。面试时不要只背命令,要按“地址确认 -> 进程 -> 端口 -> 日志 -> 网关/网络 -> 回归”的顺序讲,这样才像真实项目经验。

配套刷题:

  • Linux测试环境面试题
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
3. grep 查日志面试怎么讲
Next
5. 测试环境部署面试怎么讲