本文按初级、中级、高级三层整理 Linux 面试常考命令,并给出 10 个高频场景的答题模板。适合面试前快速复习,也适合日常运维速查。
目录
一、初级:必须会用
| 类别 | 命令 | 面试点 |
|---|---|---|
| 目录 | pwd ls -alh cd mkdir -p |
cd - 回上次目录 |
| 文件 | cp -r mv rm -rf touch |
rm -rf 慎用 |
| 查看 | cat less head -n tail -f |
大文件别用 cat |
| 权限 | chmod 755/644 chown user:group |
755 目录/可执行,644 普通文件 |
| 用户 | whoami id sudo su - |
su - 加载环境 |
| 进程 | ps aux top kill PID kill -9 PID |
默认 -15 优雅退出 |
| 磁盘 | df -h du -sh * free -h |
磁盘满先 df 再 du |
| 网络 | ping curl -I ssh scp |
curl -I 看响应头 |
| 打包 | tar -czvf tar -xzvf zip/unzip |
c 创建、x 解压、z gzip、f 文件 |
| 文本 | grep wc -l sort uniq -c |
管道组合是重点 |
二、中级:组合排查
| 场景 | 命令 | 说明 |
|---|---|---|
| 找文件 | find /path -name "*.log" -mtime +7 |
按名称、时间、大小、权限找 |
| 搜内容 | grep -rn "error" /var/log/ |
递归 + 行号 |
| 实时日志 | tail -f app.log |
排查线上问题标配 |
| 时间段日志 | sed -n '/10:00/,/11:00/p' app.log |
按时间范围截取 |
| 统计 Top IP | `awk '{print $1}' access.log | sort |
| 端口占用 | `ss -tulnp | grep 8080或lsof -i:8080` |
| 磁盘定位 | `du -sh /* 2>/dev/null | sort -rh |
| 大文件 | find / -type f -size +100M 2>/dev/null |
找 >100M 文件 |
| 已删除文件 | `lsof | grep deleted` |
| 批量替换 | `grep -rl "old" /path | xargs sed -i 's/old/new/g'` |
| 定时任务 | crontab -e / crontab -l |
分 时 日 月 周 命令 |
| 软硬链接 | ln -s target link / ln target link |
软链接删源失效,硬链接共享 inode |
三、高级:定位根因
| 问题 | 命令 | 思路 |
|---|---|---|
| CPU 高 | top → top -Hp PID → printf "%x\n" TID → `jstack PID |
grep -A 20 "nid=0x..."` |
| 内存高 | free -h `ps aux --sort=-%mem |
head cat /proc/PID/status |
| IO 高 | iostat -x 1 iotop vmstat 1 |
load 高但 CPU 不高,查 IO |
| 网络抓包 | tcpdump -i eth0 port 80 -nn |
抓包定位请求 |
| 系统日志 | `dmesg -T | tail journalctl -u 服务 -f` |
| 文件句柄 | ulimit -n `lsof -p PID |
wc -l` |
| 系统服务 | systemctl status/start/stop/restart 服务 |
服务管理 |
| 跟踪系统调用 | strace -p PID |
进程卡住/异常时用 |
| 防火墙 | iptables -L -n systemctl status firewalld |
端口不通先查防火墙 |
四、高频场景答题模板
1. 线上服务报错
bash
tail -f app.log
grep -n "ERROR" app.log | tail -50
grep "ERROR" app.log | awk '{print $NF}' | sort | uniq -c | sort -rn
追问:日志几个 G 打不开?用 grep 过滤,别 cat。
2. 磁盘满了
bash
df -h
du -sh /* 2>/dev/null | sort -rh | head
find / -type f -size +100M 2>/dev/null
lsof | grep deleted
追问:df 满但 du 不大?文件被删但进程还持有句柄,重启进程。
3. 端口被占用
bash
ss -tulnp | grep 8080
lsof -i:8080
kill -9 PID
追问:ss 比 netstat 快,现代系统推荐 ss。
4. 网站打不开
bash
ping IP
telnet IP 8080 # 或 nc -zv IP 8080
curl -I http://域名/
ps aux | grep 服务
ss -tulnp | grep 端口
tail -f app.log
顺序:网络 → 端口 → 进程 → 日志 → 防火墙。
5. CPU 飙高
bash
top
top -Hp PID
printf "%x\n" TID
jstack PID | grep -A 20 "nid=0x..."
追问:load 高但 CPU 不高?查 IO:iostat -x 1。
6. 统计 Top 10 IP
bash
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head
拆解:取列 → 排序 → 去重计数 → 倒序 → 前 10。
7. 批量替换
bash
grep -rn "old" /path
grep -rl "old" /path | xargs sed -i 's/old/new/g'
注意:sed -i 直接改源文件,先备份或先 grep。
8. 权限拒绝
bash
chmod +x script.sh
./script.sh
追问:755 = rwxr-xr-x,644 = rw-r--r--,777 不安全。
9. 定时任务不执行
bash
crontab -l
tail -f /var/log/cron
# 脚本用绝对路径,加日志
0 2 * * * /path/backup.sh >> /var/log/backup.log 2>&1
原因:环境变量不同、路径不对、没加 2>&1。
10. 优雅停服务
bash
kill PID # 默认 -15,优雅退出
kill -9 PID # 强杀,可能丢数据
生产优先用默认 kill,最后才 -9。
五、高频追问速答
| 问题 | 答案 |
|---|---|
| 软链接和硬链接区别? | 软链接是独立文件指向源,源删失效;硬链接共享 inode,删一个不影响 |
| 755 / 644 / 777? | 755 目录可执行;644 普通文件;777 任何人可读写执行,不安全 |
kill -9 和 kill? |
-9 强杀,无法清理资源;默认 -15 让进程优雅退出 |
ss 和 netstat? |
ss 更快,直接读内核;netstat 逐渐废弃 |
find 和 grep? |
find 找文件,grep 搜内容 |
> 和 >>? |
> 覆盖,>> 追加 |
2>&1? |
把错误输出重定向到标准输出 |
df 和 du 不一致? |
文件被删但进程占用:`lsof |
| load average 高? | 看 CPU、IO、进程排队,配合 top iostat vmstat |
| crontab 不执行? | 绝对路径、环境变量、看 /var/log/cron、加日志 |
nohup 和 &? |
nohup 忽略挂起,& 后台运行,常一起用 |
| 环境变量? | echo $PATH,export PATH=$PATH:/new |
六、面试话术
被问命令题,按这个结构答:
- 先说思路:「我先用 X 看整体,再用 Y 定位具体」
- 给出命令,带参数和管道
- 解释参数,体现真用过
- 补注意点,比如
kill -9慎用、sed -i先备份
结语
Linux 命令题不难,难的是在场景里快速组合。建议把上面的场景模板亲手敲一遍,面试时就能条件反射式回答。