01 文件操作命令:面试官的第一道砍
面试官不会问你“ls怎么用”。他会直接给你一个场景。
场景一:日志文件太大,服务器磁盘满了。你怎么定位问题?
命令是武器,思路才是子弹。
bash
# 查看磁盘使用情况
df -h
# 找到最大的日志文件
du -sh /var/log/* | sort -rh | head -5
# 查看文件前100行确认内容
head -100 /var/log/nginx/access.log
面试官要的不是你背命令,是你解决问题的流程。df -h看整体,du -sh找具体,head确认内容。三步走,逻辑清晰。
场景二:测试环境部署,需要把本地文件传到服务器。
bash
# 上传文件到服务器
scp ./test_report.html root@192.168.1.100:/var/www/html/
# 从服务器下载日志
scp root@192.168.1.100:/var/log/nginx/access.log ./logs/
面试官会追问:scp和rsync的区别?rsync支持增量传输,断点续传。scp不支持。一句话,差距拉开。
场景三:日志文件按时间切割,你只想要今天的数据。
bash
# 查找今天修改过的文件
find /var/log/ -name "*.log" -mtime -1
# 查找包含特定错误码的日志
grep "500" /var/log/nginx/access.log | wc -l
find命令的-mtime参数,grep的管道配合wc。面试官看你操作,心里已经给你打分了。
02 权限与进程管理:区分菜鸟和老鸟的分水岭
面试官问“你遇到过权限问题吗?”这问题看着简单,坑在后面。
场景一:测试脚本无法执行,报Permission denied。
bash
# 查看文件权限
ls -l test_script.sh
# 输出:-rw-r--r-- 1 root root 1024 test_script.sh
# 添加执行权限
chmod +x test_script.sh
# 或者修改文件所有者
chown test_user:test_group test_script.sh
面试官会追问:644、755、777分别代表什么?644是文件默认权限,755是目录默认权限,777是危险权限。别用777,这是底线。
权限管理不是技术问题,是安全意识问题。
场景二:测试环境CPU飙升,你怀疑是某个进程在搞鬼。
bash
# 查看CPU占用前10的进程
ps aux --sort=-%cpu | head -10
# 或者用top实时监控
top -b -n 1 | head -20
# 找到进程后,查看它的网络连接
lsof -i -P -n | grep <PID>
ps aux配合sort排序,lsof查看网络连接。面试官看你用lsof,就知道你懂网络排查。
场景三:进程卡死,你需要强制杀掉。
bash
# 温和杀掉
kill -15 <PID>
# 强制杀掉
kill -9 <PID>
# 按进程名杀掉
pkill -f "test_process"
面试官会问:kill -9和kill -15的区别?-15是优雅退出,-9是强制终止。先用-15,不行再用-9。这是职业素养。
03 网络与日志分析:面试的终极大考
面试官最后一道题,往往和网络排查相关。
场景一:测试接口返回超时,你需要排查网络问题。
bash
# 检查网络连通性
ping -c 4 www.example.com
# 查看路由追踪
traceroute www.example.com
# 检查端口是否开放
telnet 192.168.1.100 8080
# 或者用nc
nc -zv 192.168.1.100 8080
面试官会追问:ping不通怎么办?检查防火墙、检查网络配置、检查DNS解析。三步排查法,思路清晰。
场景二:应用报错,你需要从日志中定位问题。
bash
# 实时查看日志
tail -f /var/log/app.log
# 查找错误日志
grep "ERROR" /var/log/app.log | tail -50
# 统计错误类型
grep "ERROR" /var/log/app.log | awk '{print $5}' | sort | uniq -c | sort -rn
awk配合sort、uniq,三分钟搞定日志分析。面试官看到你用awk,就知道你懂文本处理。
日志是测试人员的侦探工具,用好它,真相只有一个。
场景三:测试环境DNS解析异常,你如何验证?
bash
# 查看DNS配置
cat /etc/resolv.conf
# 手动解析域名
nslookup www.example.com
# 或者用dig获取详细解析信息
dig www.example.com
面试官会问:nslookup和dig的区别?dig输出更详细,支持更多参数。面试官听到这个,就知道你用过。
04 面试官不会说的小技巧
面试官问“你还有什么问题吗?”这时候你问一个技术问题,加分。
技巧一:问面试官“你们测试环境用的是什么Linux发行版?”
- ►面试官回答:CentOS还是Ubuntu
- ►你接着问:那你们用yum还是apt管理包?
- ►面试官心里:这人懂。
面试不是考试,是对话。对话的核心是共鸣。
技巧二:问面试官“你们日志轮转策略是什么?”
- ►面试官回答:按天或按大小
- ►你接着说:logrotate配置要注意压缩和保留天数
- ►面试官心里:这人用过生产环境。
技巧三:问面试官“你们用crontab做定时任务吗?”
- ►面试官回答:用
- ►你接着说:crontab的MAILTO变量要配置,不然会发邮件
- ►面试官心里:这人踩过坑。
05 实战演练:一个完整的排查案例
给你一个真实场景。测试环境访问慢,你如何排查?
第一步:确认问题范围
bash
# 查看系统负载
uptime
# 输出:load average: 5.23, 4.87, 4.12
# 查看CPU使用率
top -b -n 1 | grep "Cpu(s)"
# 输出:%Cpu(s): 85.2 us, 10.3 sy, 0.0 ni, 4.5 id
CPU使用率85%,系统负载5.23,明显有问题。
第二步:定位问题进程
bash
# 找到CPU占用最高的进程
ps aux --sort=-%cpu | head -5
# 输出:test_user 1234 95.2 0.5 1024M 512M test_process
test_process进程CPU占用95.2%,就是它。
第三步:分析进程行为
bash
# 查看进程的网络连接
lsof -i -P -n | grep 1234
# 输出:test_process 1234 test_user 4u IPv4 12345 TCP 192.168.1.100:8080->192.168.1.200:3306 (ESTABLISHED)
# 查看进程打开的文件
lsof -p 1234 | head -20
进程连接到数据库,打开大量文件。你判断:数据库连接池泄漏。
第四步:临时处理
bash
# 重启进程
kill -15 1234
# 等待5秒
sleep 5
# 启动进程
./test_process &
第五步:写排查报告
bash
# 保存排查记录
history | grep -E "top|ps|lsof|kill" > /tmp/debug_report.txt
# 记录时间戳
date >> /tmp/debug_report.txt
排查问题的能力,决定你在测试行业的上升空间。
面试官看到你从问题发现、定位、分析到解决,整个流程完整清晰,直接给offer。
---
命令是死的,思路是活的。面试官要的不是你背100个命令,而是你能用3个命令解决1个问题。