Linux 基础高频面试题:CPU、内存、磁盘、进程怎么排查?
开篇场景
面试官问:
“线上机器 CPU 飙到 100%,你怎么处理?”
不要只回答 top。生产环境中,CPU 高只是现象,背后可能是流量突增、死循环、GC 频繁、慢 SQL、线程阻塞或异常任务。
Linux 排障总览图
高频面试题
1. CPU 使用率很高怎么排查?
标准思路:
常用命令:
topuptimepidstat 1vmstat 1ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head
加分点:
- 看
load average 时要结合 CPU 核数。 - Java 服务要能联想到
jstack、GC 日志和线程状态。
2. 内存使用率高怎么排查?
常用命令:
free -hps aux --sort=-%mem | headdmesg -T | grep -i oomvmstat 1
面试表达:
我会先区分是 page cache 正常占用,还是进程真实内存增长。如果出现 swap 或 OOM,需要优先评估业务影响,并结合进程内存、应用日志和最近变更定位是否存在内存泄漏或流量突增。
3. 磁盘满了怎么处理?
常用命令:
df -hdf -idu -sh /* 2>/dev/null | sort -hfind /var/log -type f -size +500M
注意:
- 不要直接删除正在被进程占用的大日志文件,可能空间不释放。
- 可用
lsof | grep deleted 检查已删除但仍被占用的文件。
4. 如何查看端口被哪个进程占用?
ss -lntp | grep 8080lsof -i :8080netstat -lntp | grep 8080
5. 如何查看系统启动日志?
journalctl -xejournalctl -u nginxjournalctl -u docker --since "1 hour ago"dmesg -T
Linux 面试加分图谱
总结清单
- CPU 高:看进程、线程、系统态、用户态、IO wait。
- 内存高:区分 cache、进程占用、swap、OOM。