一次面试,面试官让我“说说你常用的Linux命令”。大多数人张口就是ls、cd、cp、mv、rm,再问两个参数就卡壳。其实面试题考的不是你背了多少命令,而是你有没有在真实环境里用过、能不能把参数选型和坑讲明白。我做了几年面试官,也带过不少新人,把面试中高频出现的命令按场景重新理了一遍,挑出21条最容易被问到、也最容易暴露水平的命令,一条一条嚼碎了讲给你。
这份清单不打算写成命令大全,而是按“面试官会怎么问、你怎么答才不会翻车”的方式来拆。适合准备运维、后端、测试、大数据岗位面试的同学,也适合刚入行想系统过一遍Linux基础命令的开发者。如果你能把每一组命令背后的适用场景和边界讲清楚,Linux这一关基本就稳了。
1. 面试官到底在考什么:Linux命令题的背后逻辑
1.1 命令本身不难得,难得是使用场景
很多候选人把《Linux命令大全》背得滚瓜烂熟,真到面试官问“线上日志一直在增长,怎么实时看最新内容又不卡住机器”的时候,还在一句一句cat整个文件。这就是典型的“背了命令,没理解场景”。
面试官问Linux命令,本质是在验证三件事:
- 你有没有在真实Linux环境下干过活,而不是只在Windows上装了虚拟机截图;
- 你遇到具体问题时的第一反应是什么,比如看到磁盘告警是先
df -h还是先reboot; - 你能不能把输出结果解释给同事听,比如
load average升高代表什么,buffer/cache和available有什么区别。
所以别把精力花在背“一百个冷门命令”上,先把高频命令用熟、用透,知道它的输出每一列是什么意思,知道它有几个常见参数,知道它和同类命令比有哪些坑。
1.2 三个回答层次:结果、原理、边界
同样一条命令,不同候选人答出来的效果完全不同。我一般会把回答分成三个层次:
- 层次一:能敲出命令,比如会用
top看CPU; - 层次二:能解释输出,比如知道
top里的us是用户态CPU占比,sy是内核态CPU占比,wa是等待I/O的占比; - 层次三:能对比和迁移,比如能说
top和ps的定位差异,能说free的available是从哪里算出来的,能在面试官追问“CPU飙高怎么办”的时候给出完整的排查链路。
准备面试的时候,建议每学一条命令都朝第三层靠。哪怕面试官只问“有没有用过free”,你也能从“看内存余量”聊到“available才是真正可用的内存”,这场面试你就赢了。
1.3 先列一张21条命令名单,方便对照自查
下面这张表按面试出现频次和踩坑率排序,后面的章节会逐组展开。
| 序号 | 命令 | 核心场景 |
|---|---|---|
| 1 | pwd | 查看当前工作目录 |
| 2 | ls | 列出目录内容 |
| 3 | cd | 切换目录 |
| 4 | mkdir | 创建目录 |
| 5 | touch | 创建空文件、更新时间戳 |
| 6 | cp | 复制文件或目录 |
| 7 | mv | 移动、重命名 |
| 8 | rm | 删除文件或目录 |
| 9 | cat | 输出文件内容 |
| 10 | grep | 文本过滤 |
| 11 | awk | 文本处理与格式化输出 |
| 12 | sed | 流式编辑与批量替换 |
| 13 | find | 查找文件 |
| 14 | tar | 打包与压缩 |
| 15 | chmod | 修改文件权限 |
| 16 | ps | 查看进程快照 |
| 17 | top | 实时监控系统状态 |
| 18 | free | 查看内存使用 |
| 19 | df | 查看磁盘分区使用 |
| 20 | du | 统计目录空间占用 |
| 21 | ping | 测试网络连通性 |
这21条是主体,实际面试里还会带上tail/head、ss/netstat、curl、wget、scp、chown、kill等配套命令,后面都会一并讲到。
2. 文件与目录操作:基础里的基础,最容易翻车的地方
2.1 pwd、ls、cd:别小看这三条
先说pwd。很多面试官会问“pwd和pwd -P有什么区别”,一多半人会愣住。默认情况下你在shell里敲pwd,输出的是逻辑路径;如果你通过软链接进入了一个目录,pwd显示的是链接路径,而pwd -P显示的是物理真实路径。举个例子:
# 假设 /data 是指向 /var/lib/app 的软链接 cd /data pwd # 输出 /data pwd -P # 输出 /var/lib/app我实际排查问题时,经常先用pwd -P确认自己到底在哪个真实目录,尤其是写脚本或删除文件之前,这一步能避免很多误操作。
ls是高频中的高频。面试官可能让你解释ls -l输出每一列的含义:
-rw-r--r-- 1 root root 1234 Feb 20 10:30 app.log左边第一个字符是文件类型,-是普通文件,d是目录,l是软链接;接着9个字符是3组权限位,分别对应属主、属组、其他用户;后面的数字是硬链接数,再往后是属主、属组、大小、修改时间、文件名。
常用参数里,ls -a查看隐藏文件,ls -lh以人类可读的方式显示大小,ls -lt按修改时间从新到旧排列。这里最容易翻车的是ls -lrt:-r表示反转排序,所以ls -lrt实际是按修改时间从旧到新排列,很多课程喜欢教这个命令“看最新文件”,但最后显示的是最旧的文件。面试中如果你要表达“看最近修改的文件”,正确的是ls -lt,最上面那个就是最新的。
cd的隐藏考点是cd -。它能让你快速回到上一个所在目录,在多个目录之间来回切换时非常方便。面试官问“怎么快速回到上一次的目录”,答cd -就行。另外,cd ~回家目录,cd ..回上级目录,这些手速要求不高,但要在真实终端里养成条件反射。
2.2 mkdir、touch:创建操作的细节
mkdir最常用的参数是-p,可以递归创建多级目录:
mkdir -p /opt/app/log/2025/02这条命令会一次性把app、log、2025、02这么多层级全部建出来,如果目录已存在也不会报错。它还可以搭配-m直接指定初始权限,比如:
mkdir -m 700 secret_dir这样创建的目录默认就是700权限,避免创建后再去chmod。
touch的核心作用其实是“更新时间戳”,而不只是“创建空文件”。当一个文件已经存在时,touch file会把文件的修改时间更新为当前时间。面试中有一个经典问题:“小王改完配置,说改了但服务没生效,怎么排查?”其中一个思路就是看配置文件最后修改时间是不是真的变了,用stat file能看到Modify时间,touch -d '2025-02-20 10:00' file还可以把时间改成指定值。
另外一个和mkdir有关的面试情景是“批量创建100个目录”。用bash的大括号展开是最简洁的:
mkdir test{1..100}这条命令会生成test1到test100一百个目录。如果面试官问“不用花括号怎么写”,可以用for循环:
for i in $(seq 1 100); do mkdir test$i; done思路比背命令更重要,这两条都能看出你对shell语法的熟悉程度。
2.3 cp、mv、rm:危险操作与保护性习惯
cp复制目录必须加-r,否则会报错omitting directory。要保留文件属性,比如权限、时间戳,用cp -p;想完整复制目录结构、尽量保持原样,用cp -a,它相当于-dR --preserve=all,在备份场景里非常常用。
mv的隐藏知识点是跨文件系统和同一文件系统的区别。在同一分区内mv本质是改名,瞬间完成;跨文件系统时mv会先把文件复制过去,再删除源文件,所以如果源文件很大,你会看到“卡住”的现象,其实是复制过程。在脚本里处理大文件移动时,要注意这个性能差异。
rm是整篇里最该敬畏的命令,也是面试官最喜欢挖坑的地方。先明确一点:生产环境里非常不建议直接在业务目录执行rm -rf,更不建议动不动就rm -rf /。面试中如果被问到“如何删除一个目录”,不要只丢出rm -rf dir,更稳妥的回答是:
# 第一步:确认当前目录 pwd # 第二步:确认要删的对象 ls -la /path/to/dir # 第三步:用明确路径删除,不要用含通配符的相对路径 rm -r /path/to/dir我自己的习惯是先确认自定义别名,很多发行版会在root用户下给rm设置alias rm='rm -i',会交互式确认一次。如果你要批量删除大量文件又不想一直按y,可以用find ... -delete,比如:
find /tmp/build -name '*.tmp' -type f -delete这条命令把查找和删除一步到位,而且路径写清楚后,比直接甩一串通配符更安全。面试官喜欢问“如何安全删除文件”,你如果能主动说出“先pwd、再看ls、用明确路径、临时目录演练”这套动作,会非常加分。
3. 内容查看与文本处理:日志排查三件套,面试最高频
3.1 cat、tail、head:查看方式决定效率
cat适合看小文件,比如配置文件。但如果文件有几GB,直接cat会把整个文件灌进终端,轻则卡死,重则撑爆终端缓冲区。所以真要快速扫一眼大文件的开头或结尾,用head和tail。
head -n 20 app.log看前20行,tail -n 100 app.log看最后100行。面试常问:“日志文件一直在写,怎么实时监控?”标准答案是tail -f app.log,它会持续跟踪文件新增内容并打印到终端,按Ctrl + C退出。这里有个细节:tail -f和tail -F不一样,-F会跟踪文件句柄变化,即使日志发生了轮转(比如按天自动切割生成新文件),它也能继续跟着新文件输出。在生产环境看滚动日志,我更推荐tail -F,避免日志一切割就什么都看不到了。
还有一个实用组合是“边刷日志边过滤关键字”:
tail -F app.log | grep 'ERROR'这样不会满屏都是日志,只输出你关心的错误信息。面试常问“如何实时看日志中出现的Exception”,这就是常规解法。
3.2 grep:过滤日志的主力
grep是文本过滤的第一主力,常用参数有这几个:
-i忽略大小写;-v反向匹配,输出不包含关键字的行;-E使用扩展正则,支持|、+等;-r递归搜索目录;-c统计匹配行数。
常见面试题是“统计错误日志有多少行”:
grep -c 'ERROR' app.log注意-c统计的是“匹配的行数”,不是“匹配的次数”。如果一行里有多个ERROR,-c只计一行。想统计出现次数,要用grep -o 'ERROR' app.log | wc -l。
另一个高频题是“找到日志里所有错误,但排除超时类错误”:
grep 'Exception' app.log | grep -v 'TimeoutException'这种方式通过管道把两次过滤串起来,很基础但很实用。面试里我还会追问“grep找不到内容时返回码是什么”,很多人答不上来。grep找到匹配返回0,没找到返回1,文件不存在返回2。在shell脚本里,可以通过返回值判断有没有匹配到,写成if grep -q 'ready' app.log; then ...这种逻辑。
3.3 awk、sed:面试里的分水岭命令
awk是按列处理文本的工具,默认以空格或制表符分隔。最常用的场景是分析日志格式,比如拿到访问日志里的IP和状态码:
awk '{print $1, $9}' access.log$1是第一个字段,$9是第九个字段,取决于日志格式。面试必考题“统计访问次数最多的前10个IP”:
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10这串管道命令几乎算“面试标准答案”,你最好能手写出来,并解释每一步:awk取第一列IP,sort排序让相同IP相邻,uniq -c统计去重后每个IP的出现次数,sort -rn按数字从大到小排,head -10取前10条。
awk还可以用-F指定分隔符。比如分析host:port格式的文件:
awk -F: '{print $1}' hosts.txt再往下,awk支持条件过滤和内置变量,比如打印行数在20到30之间的内容:
awk 'NR>=20 && NR<=30 {print}'sed主要做“改”,最见功底的是批量替换。面试常问“把配置文件的localhost全部替换成192.168.1.10”:
sed -i 's/localhost/192.168.1.10/g' app.conf-i表示直接修改文件,s是替换命令,g是全局替换。很多帖子会提醒你别忘了g,不然每行只替换第一个匹配。这里我要特别提醒:正式环境执行sed -i之前,建议先加.bak备份:
sed -i.bak 's/localhost/192.168.1.10/g' app.conf这样会生成app.conf.bak原文件,改出问题还能回滚。面试官问“你会不会备份”,你顺势体现这个习惯,印象分会高很多。
sed还能看指定行区间:
sed -n '20,30p' app.conf-n是静默模式,不打印所有行,只打印匹配的20到30行。这和awk 'NR>=20 && NR<=30 {print}'功能一致,但写法不同。如果面试官问“awk和sed有什么区别”,可以从定位上说:awk更适合做列处理和统计,sed更适合做行级替换和编辑;实际日志分析往往先用grep过滤行,再用awk取列,最后用sed做格式化。
4. 搜索、打包与压缩:干活最常用,也最见功底
4.1 find:查找不只看名字
find是Linux里功能最强大的查找命令,它不只是按名字找文件,还能按类型、大小、时间、权限组合搜索。最基础用法:
find /opt/app -name '*.log' -type f-name指定文件名模式,-type f只找普通文件。如果你要连软链接一起找,加-L;不想进入某些目录,用-prune排除。面试常考“找到7天前生成的日志文件”:
find /var/log -name '*.log' -type f -mtime +7-mtime +7表示修改时间在7天之前。注意+7不是“7天前”,而是“超过7天”;-mtime -7表示7天以内。要精确到分钟,还可以用-mmin +60表示60分钟前。
另一个面试坑是“查找特定大小的文件,比如大于100M的文件”:
find / -size +100M -type f这条在生产环境经常用来排查谁把磁盘占满了。
find搭配-exec或xargs可以执行后续操作。比如找到的日志全部删除:
find /var/log -name '*.log' -mtime +7 -exec rm {} \;或者用xargs搭配rm,效率更高:
find /var/log -name '*.log' -mtime +7 | xargs rm -f这里有个坑:文件名带空格时,直接xargs会拆错,所以要加-print0和xargs -0:
find /var/log -name '*.log' -print0 | xargs -0 rm -f面试中如果你能主动提到-print0,说明你真的处理过文件名带空格的情况,很加分。
4.2 tar:打包和压缩是两件事
tar的本职是打包,不是压缩。它把一堆文件和目录合成一个.tar文件,真正做压缩的是gzip、bzip2、xz这些工具。常见用法:
# 打包并gzip压缩 tar -czvf backup.tar.gz /opt/app # 解压到当前目录 tar -xzvf backup.tar.gz # 解压到指定目录 tar -xzvf backup.tar.gz -C /opt/restore参数记忆口诀:c创建、x解压、z用gzip、v显示过程、f指定文件名。f最好写在最后并紧跟文件名,因为tar要求-f后面是归档文件名。
面试常问“如何解压zip文件”,这不在21条里,但配套工具要会用:
unzip app.zip zip -r app.zip /opt/app还有一个高频追问:“tar打包时如何保留权限和特殊属性?”加-p或--preserve-permissions。备份要保留完整文件属性时,这是关键参数。另外,解压时想排除某个子目录,用--exclude:
tar -czvf backup.tar.gz /opt/app --exclude='/opt/app/logs'这个在备份场景里特别实用,比如应用目录里有巨大的日志子目录,你不想每次都一起打包。
5. 权限、进程、系统状态:这几条命令决定你的运维底子
5.1 chmod:权限位换算
chmod修改权限,最常用的写法是数字法。权限对应的数字是r=4、w=2、x=1,把它们加在一起得到一个0到7的数字。比如:
chmod 755 script.sh755表示属主有rwx(7=4+2+1),属组有r-x(5=4+1),其他用户有r-x。这个权限组合对脚本和目录来说很常用:属主能读能写能执行,其他用户只能读和执行,不能改动。
为什么目录一般用755、普通文件用644?因为目录要能进入和列出文件,必须给执行位;普通文件不执行的话,不需要执行位。这个逻辑理解了,面试就不会死记硬背。
面试题经常是“查看当前用户对文件有没有写权限”,除了ls -l看权限位,还可以用stat:
stat app.log输出里会有Access: (0644/-rw-r--r--) Uid: ( 0/ root)这类信息,显示数字权限和所属用户。如果需要修改属主,用chown,比如:
chown admin:admin app.log这条命令同时修改了属主和属组,格式是用户:组。如果是“面试常问Linux命令”的扩展题,chown很值得带上,因为查看、修改权限和属主往往连着问。
5.2 ps、top:进程排查的组合拳
ps是进程快照,最常用的是ps -ef和ps aux。两者输出信息大体相同,区别在于历史背景和排序方式。面试中不需要纠结谁更优,但要知道怎么看关键字段。重点看第二列的PID、第三列的PPID(父进程PID)、第八列的STAT(进程状态)。STAT里S是睡眠,R是运行,Z是僵尸进程,D是不可中断睡眠。面试常问“系统有没有僵尸进程”,你就用:
ps -ef | grep defunct或者查看ps aux输出中STAT为Z的进程。
top是实时监控工具,面试必考。第一行能看到当前时间、运行时长、登录用户数和load average。load average有三个数字,分别是1分钟、5分钟、15分钟的平均负载。很多人以为CPU四核时负载超过4就不行了,其实负载衡量的是“运行中+不可中断睡眠”的进程数,长期大于CPU核数说明系统确实忙。
top内部还可以按P按CPU排序,按M按内存排序,数字1展开每个CPU核的使用情况。面试场景“线上CPU使用率高怎么排查”,一个标准思路是:
# 1. 先看整体负载和占用CPU最大的进程 top # 2. 记住高CPU的PID,再查看这个进程内的线程情况 top -Hp <PID> # 3. 如果是Java进程,进一步把线程ID转十六进制,再用jstack查看线程栈这串链路不一定每条命令都在21条清单里,但它展示了“从系统到进程、再到线程”的排查思路,比只会敲top强太多。
5.3 free、df、du:内存和磁盘排查一网打尽
free用来查看内存,最推荐的参数是free -h,以人类可读的单位输出。输出里有total、used、free、shared、buff/cache、available几列。这里最大的误区是看到used很高就以为内存不足,其实buff/cache包含了Linux用来缓存文件和块设备的内存,应用需要时系统会回收。真正要关注的是available,它表示在不触发大量交换的前提下,还能分配给应用的估算内存。
面试题“内存不足怎么排查”,我会先free -h看整体,再用top按内存排序,找出占用高的进程。如果确认是应用内存泄漏,还需要结合日志和监控逐步定位。
df和du经常一起考。df -h看文件系统(分区)的使用率,能发现哪个分区满了。du看目录占用空间,最常用的组合:
du -sh /opt/app/*-s只输出总计,-h人类可读,/opt/app/*会把该目录下的每个子目录分别统计。这条命令在“磁盘满了,定位哪个目录占空间大”的场景里非常高效。
还有一个容易忽略的坑是inode耗尽。df -h显示还有空间,但新建文件提示“No space left on device”,这是inode用完了。用df -i查看inode使用率。面试中如果能在排查磁盘问题时主动提到df -i,面试官会觉得你真有线上经验。
6. 网络排查与远程操作:面试里的加分区
6.1 ping:连接性测试的边界
ping是网络连通性测试的第一选择,面试出现频率不低。它基于ICMP协议,常见参数是-c指定次数、-i指定间隔。比如:
ping -c 3 -i 0.2 baidu.com意思是发3个包,每个包间隔0.2秒。-c很重要,不然ping会一直发下去,面试场景里如果忘了加-c,面试官可能以为你不知道要控制包数量。
ping的坑在于:它测的是“本机到目标主机的网络通不通、延迟多大”,不等于“目标服务可用”。很多服务器为了安全会禁用ICMP回显,ping不通但ssh、curl正常的情况经常出现。所以面试答“ping不通是否代表服务不可用”时,要说“不能直接下结论,需要进一步测试端口和HTTP服务”。
6.2 ss、netstat:端口与连接排查
面试常问“如何查看某个端口有没有被监听”,这类问题我用ss比较多:
ss -lntp | grep :8080解释一下参数:-l只看监听状态的连接,-n不做DNS反解、显示IP和端口数字,-t只显示TCP,-p显示进程信息。最后用grep过滤8080端口。如果看到LISTEN状态和一个PID,说明服务确实在监听。
netstat是更老牌的工具,很多老系统默认没装ss,但netstat也常用:
netstat -lntp | grep :8080这两个命令的差别在于,netstat要读取/proc/net/tcp等文件解析连接信息,进程多时比较慢;ss直接读取内核socket信息,更快、更准确。面试里能说出这个区别,说明你不仅会用,还懂原理。
考得更细一点,面试官会问“怎么查看一个进程监听了哪些端口”。先用ps -ef | grep java找到PID,再ss -lntp | grep <PID>,就能看到这个进程监听的全部端口。
6.3 curl、wget、scp:远程操作三板斧
curl是调试HTTP接口的神器。面试最常见的是“测试一个接口通不通、看响应时间和状态码”:
curl -I https://example.com-I只拿响应头,能看到HTTP状态码和响应头信息,不拉取整个页面。要测试完整响应时间,用:
curl -o /dev/null -s -w 'HTTP状态码: %{http_code}, 总耗时: %{time_total}s\n' https://example.com-o /dev/null丢弃响应体,-s静默模式不显示进度,-w自定义输出信息。这个写法在接口压测、网络问题排查里非常好用,比浏览器按F12还直观。
wget主要用来下载文件,优势是支持断点续传:
wget -c https://example.com/app.tar.gz-c表示继续之前未完成的下载。面试中偶尔会问“下载一半断了怎么办”,wget -c就是标准答案。
远程拷贝用scp,它底层走SSH协议。常用参数:
scp -P 2222 -r ./backup.tar.gz root@192.168.1.20:/opt/backup/-P指定SSH端口(注意是大写P),-r递归复制目录。从服务器把文件拉回来同理,交换位置即可:
scp -P 2222 root@192.168.1.20:/opt/backup/backup.tar.gz ./面试中讲到scp,可以顺带提一句“它比ftp安全,因为走SSH加密通道”,这个细节会显得你对安全有意识。
7. 面试实战经验:怎么答才不像背题库
7.1 回答的“三段式”法则
我见过很多候选人背得很熟,一开口就露馅。一个比较稳的回答模板是“场景—命令—解释输出”。举例:
- 面试官问:“你平时怎么看进程?”
- 低分回答:“用ps。”
- 高分回答:“如果只是看某个瞬间有哪些进程在跑,我用
ps -ef,重点关注PID和PPID,排查父子进程和僵尸进程很方便;如果要持续观察CPU、内存变化,我切到top,按P按CPU排序,再进一步定位。”
这样回答既展示了命令,又说清了为什么用,还带着排查思路。面试官追问也不怕,因为你已经把“场景”框住了。
再比如“如何查看磁盘空间”:
- 低分回答:“
df -h。” - 高分回答:“我先用
df -h看整体分区使用率,如果发现某个分区满了,再用du -sh /opt/app/*逐步定位哪个目录占空间最大;有时候还需要df -i看一眼inode情况,因为inode满也会导致写不进去文件。”
这套回答把单条命令扩展成一个问题排查链路,面试官很难挑毛病。
7.2 高频追问与思路速查
下面整理几个我面试时比较爱追问的问题,你可以拿来自测:
| 面试问题 | 参考回答思路 |
|---|---|
ls -l输出里第二列是什么? | 硬链接数。目录的硬链接数通常至少为2,包含自身和.。 |
| 怎么统计某个IP在日志里出现了多少次? | grep '192.168.1.10' app.log | wc -l,或直接awk '{print $1}' app.log | grep -c 'IP'结合场景。 |
| 怎么批量替换文件里的所有某关键字? | sed -i 's/旧内容/新内容/g' file,建议先备份.bak。 |
| 日志文件中间一段怎么快速查看? | sed -n '100,200p' app.log,适合中小文件;超大文件适合用awk或先grep再切片。 |
| 如何查找并杀掉匹配特定关键字的进程? | 先ps -ef | grep 关键字找到PID,确认无误后用kill;如果是一组统一管理的进程,可以用pkill -f 关键字,但必须确认不会误杀。 |
| 如何并行执行多个Linux命令? | 前台后台调度:command1 & command2 &;或xargs -P 4;&可以快速把任务放后台,并行效率在批量任务里提升明显。 |
| 如何查看系统包含哪些用户和用户组? | cat /etc/passwd看用户列表,cat /etc/group看用户组;更规范的是getent passwd/getent group。 |
最后一个问题虽然不在21条命令清单里,但面试中很容易被带出来。你想显示自己懂系统和权限,就可以在聊chmod/chown时主动提一句“用户和用户组信息主要在/etc/passwd和/etc/group,日常我会用getent查询”。这种主动性很加分。
7.3 现场演示的翻车点与保护性操作
有些面试会直接让你在终端上操作,这时候有几件事特别重要。
第一,绝对不要在真实环境乱跑破坏性命令。如果题目是“删除某个目录”,先口头说明你的思路,再在临时目录里演示。比如说:“我先把这行命令放在/tmp下面的测试目录试一下,确认路径没问题再在正式环境执行。”这句话本身就体现了安全意识。
第二,不确定参数时,先看man或--help。面试官其实不在意你忘记了某个参数,而在意你会不会用工具自己查。比如忘记tar的参数,直接说“我先man tar看一下”比瞎猜要好得多,因为真实环境里查手册再正常不过。
第三,注意别被alias骗了。很多服务器默认给grep、rm设置了别名,比如alias grep='grep --color=auto'。你实际敲grep时可能带了颜色参数。如果面试官问“系统里默认的grep和你敲的grep是不是同一个”,能意识到有 alias 机制,说明你对shell环境有理解。查看方式也很简单:
type grep alias第四,不要在一个命令里堆太多管道。面试官想看你有没有思路,而不是比谁管道多。如果一段命令超过三四个管道,建议拆开说:先做哪一步、输出什么、下一步怎么处理。比如统计IP的题目,你可以说“我先取第一列,再排序去重,最后取前10条”,然后一行一行写,清晰又不容易出错。
7.4 把Linux命令经历写进简历
简历上如果写“熟悉Linux”,就要做好被围绕命令追问的准备。更好的写法不是写“熟悉Linux命令”,而是写项目经历,比如“负责后端服务日常发布与日志排查,使用grep、awk、sed分析线上错误日志,定位接口耗时异常”。面试官看到这种描述,就会在日志分析、文本处理这个方向多问几句,而这些恰好是比较好准备的内容。
如果岗位偏运维或SRE,也可以在简历里写“通过top、free、df、du参与线上CPU和内存问题排查”,面试官大概率会顺着问“CPU高的时候你怎么定位”,这就回到了我们前面拆过的排查链路。把自己常用的命令和项目场景绑定,比贴一句“熟悉Linux常用命令”有力得多。
我个人在实际面试里最看重的,不是你背下了多少参数,而是你遇到问题时的第一反应。比如笔记本连不上服务,你会不会先ping;比如接口突然超时,你会不会先top看一眼机器负载;比如磁盘告警,你会不会先df -h再du -sh *一层层往细里查。这种本能反应是装不出来的,也是“熟悉Linux”真正的证据。
如果你还在准备面试,建议别光看文章,拿起手头的虚拟机或云主机,把上面21条命令一条条跑一遍,再给自己出几个综合题:统计日志里访问量最高的IP、批量替换配置文件里的域名、打包压缩目录后传到另一台机器。做完这组练习,再回来看面试题,你会发现它们其实是一项项很实在的日常手艺。最后分享一个小技巧:每学完一条命令,试着用三个问题拷问自己——它是什么、解决什么问题、最容易踩哪个坑。这个方法我带了好几年新人,实测下来比死记硬背高效得多,也能让你在面试官追问的时候,真正接得住。