ARTICLE · 1295341
软件测试如何自学Linux?
软件测试如何自学Linux?你好,我是小志。 最近后台收到一位读者的留言,他说:“小志,我准备入行软件测试,每次看到招聘要求上写着‘熟悉 Linux 常用命令’,心里就发虚。大学学过一点,但早就还给老师了。现在发现面试和工作中都要用到,也是现查现用,出了错就抓瞎。想系统自学一下 Linux,但不知道从哪里开始,你能不能聊聊这个话题?” 深有感触。刚入行,有一次项目上线后出了个紧急 bug,开发让我帮忙去服务器上拉一下日志。我连上服务器,面对着黑乎乎的终端窗口,脑子一片空白。cd 是干嘛的?ls 又是什么?我只敢小心翼翼地敲了一个 ls,看到一堆文件名弹出来,心里还稍微踏实了一点。然后呢?日志文件是哪个?怎么打开?怎么在里面找报错信息?我完全不知道。最后只能红着脸去求助旁边的同事,人家噼里啪啦敲了几行命令,几秒钟就把问题定位了。那一刻我就明白了:测试可以不用天天写代码,但 Linux 是服务器环境、日志排查、问题定位的基础工具;不会它,关键时刻寸步难行。 后来也是从最基础命令开始学,到今天,我不敢说自己是什么 Linux 高手,但日常工作中查日志、看性能、搭环境、定位问题,已经能应付自如了。今天我就把这些年自学 Linux 的经验和方法毫无保留地分享给你,希望帮你少走一些我当年走过的弯路。 先说一个最核心的认知:测试学 Linux,跟运维或者开发学 Linux,目标完全不一样。运维要懂系统调优、内核参数、高可用架构;开发要懂环境配置、编译部署、脚本编写。测试学 Linux,核心目标就三个字:能干活。同时一定要带上一条底线:敬畏服务器,清楚操作风险,所有陌生命令优先在测试环境验证,严禁线上随意执行高危命令。 什么叫能干活?我给你拆成三个层次。第一层,你得能在服务器上自由地找文件、浏览文件、检索内容;第二层,你得能看懂日志,从海量文本里快速定位报错堆栈、异常信息;第三层,你得能看懂系统状态,知道 CPU 高、内存持续上涨、磁盘打满、IO 阻塞分别意味着什么,能够初步判断问题方向。 所以,别被那些庞大的 Linux 学习路线图吓到。Shell 编程、内核编译、集群搭建,这些对现阶段做功能测试的同学来说,优先级并不高。你就盯着 “能干活” 这个目标去学,效率会高很多。 那具体怎么学呢?我把它分成三个阶段,每个阶段都有明确的目标和练习方法。 第一阶段,也是最基础的阶段:学会在 Linux 系统里 “走路”。这个阶段要掌握的命令不多,但必须练到形成肌肉记忆。文件操作类:ls、cd、cp、mv、mkdir、find,这几个命令每天反复练习;这里重点提醒:rm 属于高危命令,尤其是 rm -rf,线上环境一定要万分谨慎。文本查看类:cat、less、head,以及日常查日志最高频的 tail -f。配套掌握:修改权限 chmod、进程查看与终止 ps /kill、文本编辑器 vi/vim。vim 刚开始上手很反直觉,不少服务器最小化环境默认只自带 vi/vim;当然也有部分环境提供 nano,不用强求所有环境只有 vim。 这个阶段怎么练?别光刷视频。在电脑搭建虚拟机,或者租一台低价云服务器,安装 CentOS 或者 Ubuntu。给自己布置固定任务:在目录下检索带 log 关键词的文件、跨目录复制移动文件、查看日志末尾 50 行、用 vim 修改文件内容并保存退出,反复练习直到不用思考就能敲出命令。 我当年练的时候,还有一个笨但是有效的办法:把高频命令整理出来贴在屏幕边上,忘记了就瞟一眼。坚持一周,纸条就可以丢掉,基本已经内化。你也可以试试这个土办法。 第二阶段,是真正的分水岭:学会用 Linux 排查问题。这个阶段的核心就三个字:查日志。工作里绝大多数线上、测试环境问题,线索都藏在日志里。难点就是从几百兆甚至几个 G 的日志中,精准捞取少量异常行。 这时候,Linux 三剑客就登场了:grep 负责检索过滤,awk 负责按列提取处理,sed 负责文本替换编辑。很多人一听就觉得是高阶技能,有畏难情绪。但对测试来说,不用深挖全部参数。grep 吃透常用参数:忽略大小写、显示行号、反向匹配、递归检索;awk 掌握基础用法:按分隔符(空格、冒号等)提取指定列;sed 重点掌握文本替换场景即可。 ⚠️ 补充一个很关键的坑:超大日志文件不要直接 grep 全文件检索,很容易占用大量服务器内存,拖慢环境;优先流式读取,比如配合 tail。 举个真实场景:线上接口偶发超时,开发初步怀疑网络问题。我登录服务器,用 grep 过滤所有 timeout 日志,再用 awk 提取接口地址和耗时字段,搭配 sort、uniq 做统计汇总,最后发现超时全部集中在同一个查询接口。统计结果发到群里,很快定位是该接口 SQL 性能问题。整套命令不复杂,但组合起来就是一套完整的排查链路。 练习方式很简单:找一份真实业务日志,在测试环境练习。给自己出题:日志一共有多少 ERROR?哪些接口报错?报错堆栈是什么?反复用 grep、awk 去检索统计,练十几次就能熟练。 第三阶段,从 “会查日志” 升级到 “看懂系统状态”。这个阶段直接对接性能测试、线上问题定位。需要掌握:top:实时看 CPU、内存、进程负载;vmstat:整机 CPU、内存、IO、上下文切换整体负载;iostat:磁盘 IO 负载;ss:查看端口、网络连接。 不用死记所有参数,但要读懂核心指标:load average 需要结合 CPU 核数判断;vmstat 里 si、so 代表内存换入换出;iostat 的 util 指标只能作为参考,不能直接等同于磁盘瓶颈,还要区分随机 IO 和顺序 IO。top 是瞬时采样,想要回溯一段时间指标,sar 会更合适。 我当年学这块的时候,就是一边用 JMeter 压测,一边开 top、vmstat 实时观察。并发上涨,CPU、内存、IO 指标跟着变化,亲眼看到变化过程,比单纯看文章理解深刻得多。 顺带提一句:现在云原生场景越来越多,很多服务跑在容器里面,日志不在宿主机文件,需要用 docker logs,这块可以作为后续拓展了解。 再聊聊学习资源。入门阶段找一套基础命令视频,看一遍就够,不用反复刷视频,重点一定是动手实操;进阶阶段少看长篇系统教程,优先搜「Linux 日志分析实战」「grep awk sed 业务案例」,实战案例价值更高。另外非常推荐养成习惯:拿不准命令的时候,用 man 查看官方帮助文档。刚开始读英文会吃力,坚持下来,自主查文档的能力会提升一大截。 远程连接工具也要熟练:MobaXterm、FinalShell、Tabby 都可以,注意 Xshell 免费版有商用版权限制,企业环境谨慎使用。熟练掌握文件上传下载、多标签、日志高亮,能大幅提升效率。 最后聊一个我踩过最大的坑:刚自学的时候,一心想冲 Shell 脚本,觉得写脚本很酷。结果基础命令都不熟练,脚本写出来各种报错,挫败感很强。后面调整思路:优先搞定日常操作、日志排查;等工作里真的遇到批量统计、重复执行的场景,再按需学习 Shell。带着问题去学,吸收效率完全不一样。不是说 Shell 不用学,而是不要在入门阶段把它当成首要目标。 所以我的建议是,不要一上来追求大而全。按三个阶段稳步推进:第一阶段练基础文件操作;第二阶段练日志检索排查;第三阶段练系统指标观测。全部围绕真实工作场景驱动,不为了学而学。每天拿出半小时,坚持一个月,日常 Linux 操作基本够用;坚持三个月,面试的时候也能清晰讲出日志、性能指标的排查思路。 日拱一卒,功不唐捐。Linux 看着门槛很高,只要敲出第一条 ls,慢慢上手,后面就会越来越顺。我是小志,我们路上见。
准备一份模拟日志(可以自己造,或者找开发拿一份脱敏后的业务日志),完成下面题目:



附 Linux 学习清单
使用说明:
只聚焦测试高频场景:查文件、看日志、检索报错、看系统指标; 分阶段打卡练习,优先在虚拟机 / 测试云服务器操作,禁止直接在线上随意执行高危命令; 所有练习任务可以反复做,直到不用查文档就能写出命令; 标注 ⚠️ 高危命令,线上谨慎使用,执行前先确认路径。
📌 阶段一:基础操作(目标:在服务器里自由走动、管理文件|1 周练习)
必掌握命令清单
阶段一打卡练习任务(全部在测试环境完成)
登录服务器,pwd 看当前路径,cd 切换到 /tmp mkdir 创建文件夹 test_study,cd 进入这个文件夹 在里面新建一个 txt 文件,vim 写入几行模拟日志(增加 ERROR、timeout 字样),保存退出 cp 复制这个文件到 /tmp 目录,mv 重命名一份备份 find 在 /tmp 下查找名字带 .txt 的文件 tail -f 实时打开这个文件,新开窗口追加内容,观察实时输出 ps 过滤 java/python 进程,理解进程 pid
⚠️ 补充提醒:rm 删除命令rm test.txtrm -rf xxx ⚠️ 极高危!线上尽量不要随手写,删除前先 ls 确认文件,优先先备份再删。
📌 阶段二:日志排查(目标:三剑客检索日志,定位报错|2 周练习)
必掌握命令清单(Linux 三剑客 + 配套)
阶段二打卡练习任务
统计日志里面一共有多少条 ERROR 检索所有包含 timeout 的日志,忽略大小写,展示行号 过滤掉所有 INFO 日志,只保留 ERROR、WARN 用 awk 提取日志里的【接口名】和【耗时】字段 把提取出来的耗时结果 sort + uniq -c,统计每个接口异常次数 组合一条完整链路:grep "timeout" app.log | awk '{print $3,$7}' | sort | uniq -c 练习:超大日志不要直接 grep 全量文件,学会 tail -n 20000 app.log | grep "ERROR"
✅ 测试人核心场景:日志堆栈、偶发报错、接口耗时统计、错误分类❌ 现阶段不用啃正则、awk 复杂脚本、sed 高级编辑
📌 阶段三:系统指标观测(目标:看懂负载,辅助性能 / 线上问题定位|3 周练习)
必掌握命令清单
阶段三打卡练习任务(搭配压测效果最好)
df -h 查看磁盘使用率,识别磁盘打满风险 du -sh 查看日志目录一共占用多大空间 打开 top,看懂 load average,对照机器 CPU 核数理解负载高低 打开 vmstat,人为制造一点压力,观察 si so(内存交换)变化 打开 iostat,观察磁盘读写 ss -tulnp,确认服务端口是否正常监听 使用 JMeter 发起简单压测,同步观察 top、vmstat、iostat 指标变化
重点误区笔记(写在旁边)
load average > CPU 核数,代表排队任务多;不是大于 1 就一定有问题 iostat util=100% 只代表设备饱和,不等于一定是瓶颈,要看 await top 是瞬时快照,想要回看历史指标优先 sar
📌 拓展选学(等上面三个阶段熟练之后再碰,不用提前学)
Shell:简单单行循环、批量日志统计脚本(for 循环) 容器相关:docker logs 容器id、docker exec -it 容器id /bin/bash(云原生项目必备) 压缩解压:tar、zip/unzip(日志打包下载) 传输:sz /rz(MobaXterm/FinalShell 上传下载文件)
📌 通用好习惯(新人必背)
陌生命令优先在测试服务器、虚拟机验证,不要直接线上执行 操作前先备份日志 / 配置文件 线上检索日志优先用 tail 流式读取,避免 grep 超大文件打满内存 拿不准参数,执行 man 命令名 查看官方帮助文档 不要复制网上一长串命令直接粘贴执行,先看懂每一段含义
📌 面试话术小卡片(可以直接背)
我日常在 Linux 主要做三件事:
文件操作:查找、拷贝、备份日志; 日志排查:grep/awk 过滤提取报错、接口耗时,定位偶发问题; 资源观测:top、vmstat、iostat、df 等查看 CPU、内存、磁盘 IO,辅助性能测试和故障初步判断。我知道 rm -rf 这类高危命令风险,线上操作会先确认路径、优先备份。
-------------------------------
小志建了一个测试互助群,主要是各种行业测试工程师交流工作机会。扫码直接进群。群链接失效也可以扫描最下方二维码添加小志微信,备注【进群】直接拉

最近开发了一个免费面试刷题网站,扫描文末二维码或者添加小志微信lizhiceshi,添加时备注【网站】获取最新访问地址,欢迎围观学习~

最后,有任何测试疑问以及在找工作需要免费诊断简历,或者免费测试资料,以及小志编写的软件测试面试宝典、整理的测试真实面经等可以扫码添加小志微信lizhiceshi,一定知无不言,言无不尽!

推荐阅读:















































































