Linux命令在测试面试与线上排障中的30个实战用法

发布时间:2026/10/20 6:15:23
Linux命令在测试面试与线上排障中的30个实战用法 面试测试岗位有一类问题出现的概率高得离谱“你平时用Linux多吗”“线上日志怎么看”“如果日志疯狂刷ERROR你怎么定位”如果你心里有点发虚这篇文章就是写给你的。作为多年在一线做接口、性能和线上回归测试的工程师我可以负责任地说Linux命令在测试场景里真正的作用不是让你去跟运维抢活而是让你在环境异常、接口报错、数据对不上的时候有办法把问题快速缩小到具体模块。这30个命令是我按面试高频考点和日常排障价值筛出来的分成日志文本处理、进程资源、网络排查、文件环境操作四条线。这30个不是让你背参数表而是让它们成为你排查问题的底牌。1. 先搞清楚一件事测试工程师掌握Linux的场考点在哪1.1 面试官到底想考察什么很多刚转测试或者工作一两年的同学对Linux命令的理解还停留在“会cd、ls、cat就行”。但面试官问Linux根本不是考你命令拼写而是考两样东西。第一你有没有真正在Linux环境里干过活。如果只是Windows下点点点你讲出来的命令组合会是生硬的、断层的。比如你说会用tail但让你实时盯日志你知不知道要加-f让你按关键词过滤你知不知道要接grep这些都是“看在眼里”的实战痕迹。第二你遇到问题时的排查路径是否清晰。面试官经常会出场景题“线上某个接口突然变慢了你怎么查”这时候不是让你回答一条命令而是看你能不能把top找进程、free看内存、tail看日志、netstat看连接这些动作串联起来。命令本身不值钱值钱的是你面对乱局时的思路。所以这篇文章虽然叫“30个命令”但本质上是在帮你建立一套“问题定位思维框架”。1.2 测试工作流里Linux的典型场景测试工程师和生产环境的接触频率其实比很多人想象得高。发布验证、线上回归、问题复现、日志抓取、数据订正哪一样都绕不开服务器。最常见的几个场景是发布完之后验证服务是否正常启动进程在不在、端口通不通。测试环境或预发环境出问题需要自己上去看日志、看报错栈。接口返回数据不对需要到服务器上确认请求有没有到达后端响应里到底返回了什么。造数据和清理数据需要操作数据库或者文件系统。排查偶现问题需要同时观察多个日志文件甚至要看历史日志。这些场景如果只靠找运维帮忙效率会非常低。你掌握命令之后很多问题自己五分钟就能定位到方向运维配合起来也轻松很多。面试时你把这些真实发生过的工作流程讲出来比干巴巴背参数强十倍。2. 30个命令全景清单建议直接照着练2.1 分组速览与学习路线我按测试场景的使用频率把30个命令分成四组。第一组是日志与文本处理这是测试人员的日常工作第二组是进程与系统资源排查性能问题和环境异常时必备第三组是网络排查接口联调和环境连通性检查的主力第四组是文件与环境操作基本功中的基本功。分组命令核心用途日志与文本处理cat head tail less grep sed awk sort uniq wc cut查看、过滤、统计、编辑日志和文本进程与系统资源ps top free df du kill定位进程、监控资源、清理环境网络与外联排查ping curl netstat lsof连通性、接口请求、端口与连接排查文件与环境操作ls cd pwd cp mv rm mkdir find tar文件管理、路径定位、打包备份建议的学习路线是先攻日志与文本处理组再学进程和网络最后补全文件操作。理由很简单日志处理在测试日常中的出现频率最高而且学完马上就能用进程和网络命令帮你解决“服务到底好没好”的问题文件操作相对基础可以穿插着掌握。2.2 查看命令帮助本身就是一项技能很多人忽略了一个加分的习惯不会用命令时先查帮助。man、--help、type这三个是小工具虽然不计入30个主清单但它们决定了你能不能快速上手任何一台新服务器。man ls会显示完整手册适合深挖ls --help是精简提示日常够用type能告诉你某个命令是内部的还是外部的是哪个路径下的程序。面试时如果你能说出“我一般先ls --help看参数复杂命令再man”这本身就是一种工程素养的体现。毕竟技术更新快你不可能把所有参数都记死但你知道怎么快速找到答案这才重要。3. 第一梯队日志与文本处理命令测试日常频率最高3.1 tail、head、cat、less日志界四件套tail测试生涯里最重要的一个命令。默认查看文件末尾10行配合-f实现实时跟踪。线上日志现场排查时tail -f app.log是最经典的操作。还有一个细节如果日志文件被切割轮转-f会盯住旧文件要改用-F才能跟随新文件。这个点面试偶尔会问很多老手都会翻车。head看文件开头。日志切割后你想确认这条日志从哪开始用head -50 app.log就行了。它还能配合管道过滤比如查某个请求的日志片段开头。cat直接输出整个文件内容。文件小的时候没问题文件大就卡。所以实际工作中我更多是配合grep用cat app.log | grep ERROR不过直接grep ERROR app.log更高效。less大文件阅读神器。less -N app.log带行号按ShiftG直接跳到最后输入/关键字搜索。看几百MB日志时vi会卡less却能流畅翻页。需要注意less在终端里是交互式界面退出用q。3.2 grep日志过滤的灵魂grep不是简单的“查关键字”它是一整套过滤体系。测试面试题里“统计日志里ERROR出现的次数”答案就是grep -c ERROR app.log。grep -i忽略大小写grep -v排除匹配行grep -A 5、-B 5分别显示匹配行后5行和前5行。这组参数在查异常栈时非常有用。比如一条报错前后几行的上下文你直接grep -A 10 -B 5 NullPointer app.log就能把上下文一起揪出来比单看一行报错强得多。grep还支持正则。比如想找所有包含IP地址的日志行可以用grep -E [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} app.log。面试问到“你会用正则吗”这算一个基础证明。3.3 awk、sed、sort、uniq、wc、cut文本处理三板斧awk按列处理文本的神器。日志里常是“时间 IP 接口 状态码”的格式awk {print $1, $4, $5} app.log就能把关键列拎出来。更进阶一点awk $5 500 {print} app.log能筛选出所有5xx状态码的日志行。很多人怕awk其实测试岗位不需要写多复杂的awk掌握$1到$NF的列引用就够用。我面试时会问“看日志里Top10的请求来源IP”会用awk {print $1} app.log | sort | uniq -c | sort -nr | head -10的人基本就过关了。sed按行做替换和编辑。sed -n 20,50p app.log只打印20到50行sed s/old/new/g file做全局替换。它和awk的分工是awk看列sed看行。sort排序。测试里常用于给状态码、耗时、IP排序。sort -n按数值排序-r倒序-k指定列。uniq去重统计。需要先sort才能生效因为连续重复才去重。sort ip.txt | uniq -c | sort -nr是经典的统计Top IP组合拳。wc统计行数、词数、字节数。wc -l app.log统计日志行数是验证“今天有多少请求”的快速方式。cut按分隔符切列。cut -d -f1可以替代awk做简单列提取。它比awk轻量适合在不需要复杂逻辑时使用。3.4 一个组合实战从日志里统计5xx错误接口把上面这些命令串起来才能真正解决测试问题。假设你想统计今天线上哪个接口报5xx最多可以这样操作grep 2025-06-01 app.log | grep HTTP/1.1\ 5 | awk {print $7} | sort | uniq -c | sort -nr | head -20这条命令的意思是先过滤出当天日志再匹配返回5xx的行然后提取第7列通常是请求路径再去重统计后按次数倒序。一行命令下来出错最频繁的接口就浮出水面了。这叫“组合拳”也是面试时最有利的武器。4. 第二梯队进程与系统资源命令定位环境异常底牌4.1 ps、top找到正在运行的进程和异常CPU消耗者ps查看进程快照。ps -ef | grep java是测试环境最常用的操作确认服务是否启动、拿到PID。ps aux能额外显示CPU和内存占用定位某个进程是否吃满资源。与ps搭配的是pgrep不过那算扩展命令。面试时回答“怎么查进程”ps -ef | grep 服务名是标准答案你把PID抓出来后续就能配合kill或top操作。top实时刷新进程CPU、内存、负载。面试场景题“服务变慢”的排查标准开场就是top先按shift P按CPU降序、按shift M按内存降序一眼看出哪条进程在搞事。top还有一个妙用按c键展示完整命令行看到进程的具体启动参数。这在判断“是哪个服务、什么环境跑的jar包”时很有用。4.2 free、df、du内存与磁盘到底还剩多少free查看内存使用情况。free -h按人类可读单位输出看available列比看free列更靠谱因为Linux会把内存拿去做缓存。很多内存告警其实是误报看available才能真正判断是否吃紧。df查看磁盘整体占用。df -h按目录级别显示各分区的占用比例。磁盘写满会导致日志写不进去、服务直接雪崩所以“线上写日志失败”时要先跑一下df -h。du查看具体目录或文件占用多少空间。du -sh *按目录汇总大小是找“哪个目录悄悄吃满磁盘”的利器du -sh log/则直接看日志目录总量判断日志增长是否正常。这三兄弟在性能测试和线上问题排查中搭配非常顺畅top看CPUfree看内存df/du看磁盘一套下来硬件层面基本摸清。4.3 kill、nohup进程控制与后台运行kill终止进程。kill -9 PID是强制杀死kill -15 PID是优雅退出。测试环境上重启服务前要先拿到PID然后kill -9再重新拉起。注意有些服务被强杀会导致数据不一致能优雅退出就先优雅。nohup使进程在终端关闭后继续运行。nohup java -jar app.jar app.log 21 是一条经典的测试环境启动命令。它把标准输出写到日志文件同时返回后台运行。这个命令几乎必考因为发布脚本里全是它。kill和nohup的组合使用是运维测试一体化的基础能力掌握它们之后你再也不会因为“窗口关了服务就没了”而烦恼。5. 第三梯队网络排查命令接口联调离不开5.1 ping、curl从网络连通到接口验证ping测试网络连通性。ping -c 4 目标IP发4个包就停。注意ping通只代表网络通不代表服务端口通、更不代表接口正常。很多新人拿ping当万能药这是不对的。curl接口请求神器。curl -i http://localhost:8080/api/test可以看完整返回头curl -X POST -H Content-Type: application/json -d {name:测试} http://localhost:8080/api/trade模拟POST请求curl -I只取响应头判断服务是否在线。接口联调时后端说“我能跑”你直接在服务器上curl一下就知道对方到底有没有在撒谎。curl配合-v还能看到TLS握手、DNS解析、请求发送细节是排查接口超时和证书问题的利器。5.2 netstat、lsof端口与连接状态排查netstat查看系统网络连接、路由、端口监听状态。面试问“8080端口被谁占了”标准答案就是netstat -tlnp | grep 8080。其中-t是TCP-l是listen-n是数字端口-p是显示进程。还有netstat -an查看全量连接TIME_WAIT、ESTABLISHED这些状态一眼就能扫出来。lsof列出当前打开的文件但最常用的是找端口对应进程。lsof -i :8080比netstat多一层直接显示PID和进程名。如果服务端口起不来优先用lsof -i:端口查端口是不是被占再用netstat看连接明细。这两条命令可以交叉验证。面试时你说出“先用netstat -tlnp看监听再用lsof确认进程”这种组合思路比单纯背命令更能拿分。6. 第四梯队文件与环境操作命令基本功中的基本功6.1 ls、cd、pwd、find在服务器上不迷路ls列出目录内容。ls -l看权限和大小ls -a看隐藏文件ls -lh人类可读文件大小。查日志时我常配合ll如果服务器有别名快速定位最新文件。cd切换目录。cd -回到上一个目录cd ~回家目录。这个命令本身简单但和find配合起来能让你在迷路时迅速回位。pwd显示当前路径。排查问题时你总得知道自己在哪尤其是要跟同事描述“日志在这个路径下”时一句pwd就能给出准确答案。find按名称、时间、大小找文件。find /home/logs -name app*.log按通配符找日志find /home/logs -mtime -3找最近三天修改过的文件find . -size 10M找超过10MB的大文件。磁盘满时它就是你的搜救队。6.2 cp、mv、rm、mkdir文件操作里的坑cp复制文件和目录。cp -r递归复制目录。注意复制大量文件时会覆盖目标同名文件而不提醒所以先ls看清再动手。mv移动或重命名。它和cp的区别是mv会改变文件的位置常用于把日志切走、临时改名备份配置。mv在同一文件系统下是原子操作比较安全。rm删除文件或目录。rm -rf dir能递归强删但也是最危险的一条。删除前我强烈建议先ls确认路径分布式环境里误删测试数据非常致命。mkdir创建目录。mkdir -p a/b/c一次创建多层目录不用一层一层mkdir。脚本里创建日志目录、临时目录时超好用。6.3 tar日志归档和代码包解压必会tar打包和解包。tar -czvf logs.tar.gz logs/压缩归档tar -xzvf logs.tar.gz解压。测试环境上传报告、备份日志、解压发布包全用它。面试问“日志太多了想打包发给开发”标准思路就是这条命令。-z指gzip压缩-c创建-x解压-v显示过程-f指定文件名。你把这五个参数记住tar就算掌握了。如果涉及大型包可以去掉-v减少输出这不影响功能。7. 面试现场实操三连套题让你拿分7.1 场景一线上接口突然返回500你怎么排查这是一道高频场景题。我建议按顺序答先确认服务进程在不在ps -ef | grep 服务名再curl -I看服务端口通不通然后tail -f日志看有没有报错栈最后free、df -h看资源和磁盘是否被撑爆。这四步对应四个不同层面的可能性且顺序合理。如果进程没了那就是宕机或被杀端口不通可能是监听挂掉报错栈在那是业务或代码问题资源爆了那是环境容量问题。面试官听到这种层层递进的思路基本就给你加分了。7.2 场景二磁盘满告警如何定位大文件接到告警别慌。第一步df -h确认哪个分区满了第二步du -sh /某个目录/*找出占空间大的目录第三步进入目录后继续du -sh *逐层缩小范围第四步用find /路径 -size 500M把大文件揪出来。这个套路其实就是一个循环“看整体、找大块、再细分”。在面试中你把这个思维讲清楚了说明你真的处理过类似问题。7.3 场景三进程被kill后自动拉起问题排查有时测试环境服务会自动退出查出来不是人为操作。这时候先看进程在不在ps -ef | grep java如果每次起来一会儿就死去看日志tail -100 app.log再用dmesg看内核是否OOM杀进程配合free -h确认内存是否不够。这个问题更偏进阶了但排查思路和命令依然是那些日常命令。面试时能把“先看进程、再看日志、再看系统”这个链条讲出来你已经超过平均分。8. 常见问题速查表与一点个人心得8.1 常见问题速查问题症状可能原因核心命令接口超时网络不通或服务负载高ping、curl、top日志不写入磁盘满或权限问题df -h、ls -l端口被占用已有进程在监听lsof -i:8080、netstat -tlnp服务启动失败jar包损坏或端口占用tail -f app.log、lsof日志增长过快日志级别过低或死循环du -sh log/、top内存不足进程泄漏或机器配置低free -h、ps aux请求返回500代码异常或配置错误grep ERROR app.log找不到日志文件路径不一致或命名规则不同find / -name applog*8.2 个人心得退一步看测试工程师的Linux能力我自己带过不少测试新人也面试过很多人最大的感受是大部分人输在“不理解为什么”而不是“记不住命令”。你问我awk {print $1}是什么意思我讲一遍你就能懂但遇到“日志里出现大量401你怎么定位”这种问题光会命令是不够的你得知道401是鉴权失败得看日志里的token校验得知道去哪个文件找相关记录。命令是工具排查路径才是能力。所以我最后想给的建议是不要孤立地背这30个命令而是去服务器上真实操作一遍。你可以自己搭个测试环境故意制造一次端口冲突、一次磁盘写满、一次服务崩溃然后用命令去定位和解决。这种“自找麻烦”式的练习比刷十遍面试题都管用。我在实际工作中还有一个习惯把高频的组合命令存成小脚本或记在笔记里。比如“查5xx排行”“查IP访问次数”“查Java进程资源占用”这些常用套路写顺手了面试时随口就能说出完整命令串。这样背下来的不是参数是你的肌肉记忆。Linux这块面试最大的坑就是把“用过”说成“会了”。真正会了的表现是你拿到一台陌生的服务器面对一个模糊的问题能自然地敲出第一条命令并且越查越清晰。30个命令只是起点顺着这条线练下去你会发现自己比想象中能查的问题要多得多。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询