恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
测试工程师面试必问:30个Linux命令实战详解与排查思路
首页
资讯中心
/
测试工程师面试必问:30个Linux命令实战详解与排查思路
测试工程师面试必问:30个Linux命令实战详解与排查思路
发布时间:2026/10/20 19:07:03
面试测试工程师如果面试官只让你准备一个技术点那我建议押 Linux 命令。原因很朴素不管是环境部署、日志排查、接口验证还是性能定位Linux 都是绕不开的底层操作环境。你平时写用例、点界面真到排查线上 bug或者盯着测试环境看报错的时候还是得靠命令行解决问题。这篇文章我把面试官真正会问、测试日常真正会用的 30 个 Linux 命令梳理了一遍不是罗列参数而是照着面试的逻辑拆开讲每个命令用来干什么、有什么坑、面试官会怎么往深处追问。无论你是刚转行的测试新手还是准备跳槽的资深 QA这份清单都值得对着命令行敲一遍。1. 为什么面试官揪着 Linux 命令不放——考察思路拆解1.1 测试日常哪个环节都绕不开 Linux我刚入行的时候也以为测试就是点点页面、提交 bug后来发现这是对测试工作最大的误解。任何一个测试环境都跑在 Linux 服务器上你提交 bug 之前要确认环境是不是正常要看服务日志判断问题是前端还是后端要清理测试数据、要启动被依赖的服务甚至要自己看接口报文、分析慢请求。这些场景里有八成以上是在命令行里完成的。更现实的是现在的测试工程师普遍要接触自动化脚本和持续集成。脚本跑在 Linux 节点上执行出错了你得去日志里找原因持续集成任务构建失败第一件事是 SSH 上服务器查日志、查进程、查端口。这些能力用到的基本单位就是 Linux 命令。说白了Linux 命令在测试岗面试里不是冷门加分项而是默认的基础能力。1.2 面试官不是在考背参数是在考这五种能力很多同学准备 Linux 面试题上来就背参数表背得挺熟但一到场景题就懵。我作为经常参与面试的人告诉你面试官问 Linux 命令核心想看的是这些东西第一看基础操作是否熟练。会不会看目录结构、创建文件、复制移动这反映你有没有真正在服务器上干过活。第二看日志定位能力。让你查一个报错、统计一段时间的错误数这是测试工作里最日常的操作。第三看性能排查思路。接口慢了、CPU 飙了、磁盘满了你第一步干什么、第二步干什么面试官要听的是分析路径。第四看安全意识。随便让你删文件你就rm -rf让你看端口占用你直接kill -9这类操作反映了你对生产环境的敬畏心。第五看能不能把命令组合成解决方案。单个命令谁都会背但grep接sort接uniq接head这种管道组合能力才是解决问题的真实水平。所以下面我不按命令字母顺序讲而是按测试工程师的实际工作场景来分组每一组都带上场景描述和面试追问点。2. 文件与目录操作最基础的 8 个命令别在这些细节上翻车2.1 目录漫游三件套pwd、cd、ls我面试人的时候经常开个终端模拟器让候选人先登录服务器然后看他在哪。有些人习惯性敲pwd确认自己当前路径有些人上来就在根目录下一顿操作——这两种人给我的第一印象是完全不同的。pwd查看当前所在目录。测试环境服务器文件结构复杂你从文档里复制一条路径下来粘贴进去先cd再pwd确认这个习惯能省掉大量迷路的麻烦。cd切换目录。除了常见的cd /xxx、cd ..、cd ~回用户主目录之外面试官偶尔会问cd -是什么意思这是返回上一次所在目录属于高频操作。ls列出目录内容。真正在测试环境里用得最多的是ls -l看权限、属主、大小、ls -a看隐藏文件、ls -lh以人类可读的方式显示容量、ls -lt按时间排序新版文件排前面。别忘了ls -l输出的每一列代表什么面试官随便指一个文件让你解释-rw-r--r--的每个字符含义这就是后面chmod部分的基础。2.2 文件的创建、复制、移动与删除mkdir、touch、cp、mv、rm这五个命令听起来谁都会但细节决定你能不能过面试关。mkdir创建目录mkdir -p a/b/c可以一次性创建多级目录。如果目录已存在普通mkdir会报错-p则不会这个参数在脚本里特别常用因为你不确定上一步的环境是否干净。touch表面上用来创建空文件实际还有一个重要用途更新文件时间戳。面试官可能会问如何快速生成一个空文件除了touch你可以提重定向但要记得解释两者的区别。cp复制文件最容易翻车的是复制目录时忘记加-r导致报错。cp -r递归复制目录cp -i覆盖前提示cp -a保留权限和属性。面试追问的常见点是两个服务器之间怎么复制文件这块如果主动提到scp印象分会明显提升。mv移动或重命名文件。这个名字容易让人以为它只是移动但mv oldname newname就是重命名。面试官偶尔会问mv跨文件系统和跨目录移动的区别简单说同文件系统是改个指针跨文件系统则是复制再删除涉及 inode 的概念能说清楚这一点说明你理解得比较深。rm删除文件这是所有 Linux 命令里面试官最警惕的一个。rm -r删目录、rm -f强制删除两者合起来rm -rf能删除整个目录树但在测试环境和生产环境中都属于高风险操作。我不会故作姿态地说永远不要用 rm -rf而是建议你记住两条第一执行删除前先ls看清楚目标路径第二习惯用rm -i或先mv到临时目录再统一删除给自己留条后路。2.3 高频追问如何批量查找文件30 个命令名单里没有find但面试场景题里几乎必然会涉及所以放在这一节一起讲。find是按条件查找文件的利器。测试环境里最常见的是按名字找配置文件find /opt -name application*.yml按大小找大文件find /logs -size 500M按时间找近期修改的文件find /tmp -mtime -1。面试官如果问磁盘满了怎么找大文件你第一反应应该是df -h看整体使用率然后du定位大目录再用find按大小筛一次这一整套链路比单纯背find参数有说服力得多。3. 日志分析与文本处理测试工程师的重头戏3.1 快速看日志tail、head、less测一个接口报错了测一个功能无法复现第一件事永远是看日志。看日志不是打开整个文件慢慢读而是有策略地看。tail看文件尾部tail -f是实时跟踪日志输出这是测试里最常用的组合相关操作触发后观察日志是否滚动出新增内容。tail -n 50指定显示最后 50 行适合排查启动报错。注意tail -f在脚本里通常配合--pid或超时会话使用否则会一直挂住不退出。head看文件头部head -n 20显示前 20 行一般用来确认日志格式、字段含义或者看程序启动横幅上的版本信息。less是一个被我低估了很久的命令。以前我看日志习惯cat或者tail -n 200文件一旦上几百兆就卡得难受。less打开大文件时不做全量加载滚动流畅而且支持/关键词直接搜索、n跳转下一处匹配、g跳到文件开头、G跳到结尾。如果你面试时提到查日志用 less 而不是 vi因为 vi 打开大文件会先把整个文件读进内存这个细节就是面试官眼中的实战经验。3.2 过滤与统计grep、wc、sort、uniq日志里大部分有效信息不是看出来的是过滤出来的。grep是日志分析的核心。基础用法就不展开了要重点掌握这几个高频组合grep -n显示行号、grep -v反向匹配过滤掉无关内容、grep -c统计匹配行数、grep -i忽略大小写、grep -E使用扩展正则以及grep -A 5 -B 5显示匹配行的上下文各五行。测试排错时一条报错往往要看前后几行才知道上下文这比单看报错那一行有效得多。wc用来统计行数字数字节最常用的是wc -l。面试里典型的问法是这个日志文件一共有多少行然后引申到为什么统计行数用wc -l而不是直接cat整个文件答案很简单大文件cat会刷屏且慢wc -l只遍历不输出。sort排序sort -n按数值排序而不是字典序、sort -r倒序、sort -t -k 2指定分隔符和排序字段。光看参数很枯燥放到场景里就有意思了统计每个接口被调用次数按次数倒序排这就是sort和uniq的组合拳。uniq去重注意它的一个隐藏坑uniq只能去除相邻的重复行所以必须先sort再uniq。uniq -c在每行前加上出现次数这一参数在统计场景里几乎必用。提示一旦涉及统计排名前 N标准套路就是sort | uniq -c | sort -nr | head -n 10这个四段管道表达式强烈建议按顺序记下来。3.3 日志文本加工两把刀sed、awksed和awk是文本处理里最能体现功底的两个工具也是测试工程师面试的分水岭。sed擅长行级别的流式编辑。最常用的两个场景是替换和删除。替换语法sed -i s/旧文本/新文本/g 文件里-i表示直接修改原文件千万别漏了-i否则修改不会落盘g表示全局替换每一行的所有匹配项不加则只替换第一个。删除指定行则用sed -i 10d 文件或sed -i 100,200d 文件。面试官如果问上万个文件里的某个配置项要批量替换怎么弄你能张口说用find配合sed -i这就是方案能力。awk擅长按字段提取和汇总。它默认按空白字符把一行拆成若干列$1是第一列、$2是第二列、$NF是最后一列。日志分析里最常见的用法是提取访问日志的 IP、接口路径、状态码、耗时然后交给sort和uniq继续统计。比如想提取一个访问日志里的 URL直接awk {print $7} access.log就能拿到。awk还支持条件过滤比如awk $NF500可以把耗时超过 500 毫秒的行单独挑出来这在性能排查里非常实用。# 提取访问日志中耗时超过 1 秒的请求的 URL 和耗时 awk $NF 1000 {print $7, $NF} access.log3.4 面试实战给我看看最近 5 分钟的报错面试官最爱的实操题长这样你负责的模块今天报错率上升日志文件在/data/app/error.log你怎么快速判断最近发生了什么。合理的答案是一条命令流tail -n 5000 /data/app/error.log | grep -E ERROR|Exception | tail -n 100再加一点功力想统计最近 1000 条日志里错误类型的分布就接上sed或者awk先取字段再用sort | uniq -c | sort -nr排序。这种命令组合一时半会说不完但你得在面试时展示出我知道该用什么命令把一个问题拆解掉的思维路径而不是背一个grep参数就结束了。4. 系统状态与性能排查你测的接口慢到底慢在哪4.1 进程与资源占用ps、top、free测试工程师测性能或者排查测试环境接口变慢第一个要去的地方就是系统资源。ps用于查看进程快照。测试环境里最常用的是ps -ef和ps aux两者表达的信息略有差异但都能看清进程列表。面试经典追问是ps -ef和ps aux有什么区别虽然输出格式不同但在日常排查中二者基本可以通用能说清这一点就不容易露怯。再进一步ps aux --sort-%cpu按 CPU 占用排序、ps aux --sort-%mem按内存排序面试官问到CPU 占用最高的是哪个进程时直接用排序参数比肉眼扫描整齐得多。top是进程和系统资源的动态视图相当于性能监控面板的关键帧。经典交互键要记住P按 CPU 排序、M按内存排序、1展开每个 CPU 核的使用率、q退出。实际排查时我会先在top里按P找到 CPU 最高的进程 PID然后去ps或者/proc/PID里查这个进程的启动时间、命令行参数、所属服务再结合日志定位。free专门看内存。free -h以人类可读单位显示重点看total、used、available三列不要一看到used高就紧张。Linux 会把空闲内存用作缓存这部分在buff/cache里真正可用的内存看available更准确。面试官问到free 显示用了 90% 内存是不是内存不够能解释清楚 buff/cache 与 available 的区别比只会报数字强得多。4.2 磁盘究竟被谁占满了df、du测试环境的磁盘告急是家常便饭日志一多磁盘就打满接口立刻开始报错。df看文件系统的整体使用率df -h以单位友好的方式显示。第一列是文件系统名最后一列是挂载点你要能分辨出哪个目录挂载在哪个分区上。比如/data挂载在单独的/dev/sdb1上那排查的重点就该放在 /data 下而不是看根分区。du看目录占用的实际空间du -sh统计指定目录合计大小du -h --max-depth1只看一层子目录的大小。磁盘排查的标准步骤是df -h找到快满的分区切到对应的挂载点一条du -h --max-depth1 | sort -hr | head就会把最大的几个目录亮出来再一层层往下追直到定位到大目录里的日志文件或临时文件。# 定位根分区下哪个目录占空间最大 sudo du -h --max-depth1 / | sort -hr | head -n 104.3 性能问题真实排查案例我在一个测试环境里遇到过接口响应时间突然从 200ms 涨到 3 秒的情况。排查路径是先top看到有个 Java 进程 CPU 占用接近 300%然后用top -H -p PID查看进程内的线程占用再用jstack导出线程栈看哪个线程在忙碌循环或者持有锁等待。虽然这里的jstack是 Java 专用工具但 Linux 命令层面做的事是固定的定位目标进程、分析资源占用、把信息交给业务侧工具去深挖。这串操作回答面试题接口变慢你怎么排查时完全够用先看系统负载再定位进程再看线程与日志层层缩小范围。命令本身不复杂值钱的是这个分析顺序。5. 网络与远程操作接口调不通的时候怎么办5.1 连通性检查ping、netstat、lsof测试环境部署完先 ping 一下确认网络通不通。ping -c 4次数要加否则 CtrlC 才停。看到丢包说明网络有问题看到延迟大说明链路有瓶颈但要注意 ping 通不代表端口通所以第二步必须做端口检查。netstat是查看网络连接和服务监听状态的经典命令netstat -tlnp是黄金组合t显示 TCP、l只显示监听状态、n用数字显示地址端口、p显示对应的进程 PID 和名称。面试里端口 8080 被占用怎么找到是谁占用的标准答案就是netstat -tlnp | grep 8080然后根据需要处理占用进程。lsof也可以查端口占用lsof -i:8080直接列出占用 8080 端口的进程比netstat更直观。它还能配合进程排查lsof -p PID查看某个进程打开了哪些文件这在判断为什么删不掉这个文件或谁占着这个日志文件不让你清时特别好用。现在很多新版系统推荐ss命令替代netstat但面试时两个都能说出来更有余量。5.2 接口验证的瑞士军刀curlcurl是测试工程师做接口验证绕不开的命令行工具作用等同于一个无图形的 Postman。面试官问不用抓包工具和 Postman怎么快速测一个 GET 接口的时候冷启动一条curl就是正确姿势。# 查看接口返回的 HTTP 状态码 curl -s -o /dev/null -w %{http_code} http://example.com/api/info # 发送 JSON 格式的 POST 请求 curl -X POST http://example.com/api/upload \ -H Content-Type: application/json \ -d {name: test, id: 123}参数清单里实测最常用的有这些-X指定请求方法-H添加请求头-d发送请求体数据注意用了-d默认会变成 POST 请求-s静默模式不回显进度条-o输出到文件而不是终端-w自定义输出格式常用于打印状态码或耗时-i在响应中同时显示响应头。调试时想看具体这请求耗时多久拿到第一个字节curl -w time_total: %{time_total}s\n就能量出来这个用法在排查接口慢时非常管用。5.3 权限与打包chmod、tarchmod管理文件权限面试必考数字权限的算法。r 读是 4w 写是 2x 执行是 1然后相加。chmod 755就是属主拥有读写给执行7属组和其他用户只有读和执行55644则属主读写、其他人只读。测试环境最常碰到的权限问题是部署脚本没有执行权限执行时报Permission denied这时chmod x命令最快解决。tar打包与压缩测试环境同步部署包、打包日志都离不开它。压缩用tar -czvf 目标.tar.gz 源目录解压用tar -xzvf 包名.tar.gz解开到指定目录加-C /目标路径。中间四个字母的含义面试官喜欢追问c创建、x解压、z走 gzip 压缩、v显示过程、f指定文件名。注意f必须放最后因为后面跟着的是文件名。5.4 后台运行与进程管理nohup、kill测试环境执行一个长时间运行的脚本或者临时服务最怕 SSH 断开任务也断了。nohup就是忽略挂断的意思配合把进程放到后台并使其脱离终端会话。标准写法是nohup python run_test.py run.log 21 这里要能解释清楚重定向的含义是标准输出写入 run.log21是把标准错误也重定向到同一个位置否则报错信息会原样打到终端进程日志里根本看不到。kill管理进程kill PID默认发送 SIGTERM让进程优雅退出先给进程机会处理收尾kill -9 PID发送 SIGKILL强制杀死。面试里常问的场景是服务无响应怎么办专业回答是先试温和的kill观察进程是否退出不行再上kill -9并配合ps -ef | grep 进程名确认进程确实没了。上来就kill -9会显得对进程生命周期理解太浅。6. 面试场景题实战与避坑指南6.1 高频场景题一日志报错了怎么从零开始查面试官给一个任务前端反馈某个接口 500 报错日志在测试服务器的固定目录你从哪条命令开始。推荐的回答路径# 第一步确认日志文件位置并实时观察最新输出 tail -n 100 app.log # 第二步过滤出错误关键字 grep -E ERROR|Exception app.log | tail -n 50 # 第三步提取上下文 grep -A 10 -B 5 NullPointerException app.log回答时把每一步的意图说出来先看尾部知道当前状态再过滤报错再看上下文定位触发条件。这比一口气甩出十个命令参数更让面试官放心。6.2 高频场景题二系统 CPU 使用率飙高top先看一眼负载按P排序 CPU 占用拿到最高进程的 PID。接着ps -ef | grep PID或ps -fp PID查进程身份再用top -H -p PID看线程级别。如果是 Java 应用再结合jstack导出线程栈配合日志确认是不是某个请求反复重试造成的。这里考察的是你知不知道流程的下一步而不是单点命令的高深程度。6.3 高频场景题三磁盘满了测试环境没法部署两手并进df -h看整体使用率du -h --max-depth1逐层找大目录。找到明确占空间的日志文件后不要马上rm先确认是哪个服务在写用lsof看文件是否被占用因为某些进程占用的被删文件其实不会立即释放磁盘空间还要配合kill或重启服务释放文件句柄。这一步说出来面试官基本就知道你处理过真实线上问题。6.4 避坑清单与复盘心得准备 Linux 面试题最常见的问题是只背参数不练场景到现场张口就是ls、cd、pwd遇到统计访问量前五的 IP就说不出管道组合。这块没有捷径建议每个命令找对应的场景题实际敲一遍敲完再对照我这篇文章里的组合写法复盘。第二个常犯的毛病是权限相关的回答含糊。chmod 777总是单独出现却说不清为什么 777 在生产环境不能用也说不出数字怎么来的。每个用过一次的命令都值得多想一步它的副作用这也是面试官判断你是在实验室敲过还是真的上过战场的依据。第三个问题是忽视命令之间的差异。比如kill和kill -9的区别tail -f与tail -n的适用场景ps aux | grep时为什么最后一页会多出一个 grep 进程本身。这些看起来细碎的差别恰恰是区分会背命令和会用命令的地方。我个人在实际面试中观察到一个稳赚不赔的准备方式不要按字母表背命令而是按日志排查、进程排查、网络排查、磁盘排查四个场景各准备三条可落地的命令链。这样无论面试官问哪个方向你总能给出先看什么、再看什么、怎么确认结论的完整回答而不是被一句请说出三个网络排查命令问住。面试结束前如果再主动提一句还需要我聊聊实际排障时怎么组合这些命令吗这一场 Linux 考察基本就是稳局。