当前位置:首页>Linux>Linux 运维面试题详解(一)系统基础与核心命令

Linux 运维面试题详解(一)系统基础与核心命令

  • 2026-08-27 07:39:48
Linux 运维面试题详解(一)系统基础与核心命令

本系列面向 Linux 运维 / 云计算 / DevOps / SRE 面试,按真实面试频率拆分,多篇系统整理。本文为 第一篇:系统基础 + 核心命令,属于“面试必过篇”,几乎每场都会问。


一、CPU / 内存 / 系统信息

1. 如何查看 Linux 有几颗物理 CPU?每颗 CPU 有多少核?

面试官考察点:是否区分 物理 CPU / 核数 / 逻辑 CPU(超线程)

# 物理 CPU 数cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l# 每颗 CPU 的核心数cat /proc/cpuinfo | grep "cpu cores" | uniq# 逻辑 CPU 数(线程数)cat /proc/cpuinfo | grep "processor" | wc -l

加分回答:

逻辑 CPU = 物理 CPU × 核数 × 超线程(HT),Linux 调度以逻辑 CPU 为单位。


2. 如何查看内存使用情况?free 中 buff/cache 怎么理解?

free -h
  • used:真正被程序占用的内存
  • buff/cache:用于缓存磁盘数据(可回收)
  • available:系统可立即分配的内存(面试重点)

面试陷阱:

buff/cache 高 ≠ 内存不够,这是 Linux 的性能优化策略。


3. buffer 和 cache 的区别?

项目
buffer
cache
面向对象
块设备
文件数据
场景
写磁盘
读文件
是否可回收
是
是
echo 3 > /proc/sys/vm/drop_caches

二、系统负载与性能判断(高频)

4. 如何查看系统负载?load average 三个数代表什么?

topuptimew
load average: 1.20, 0.98, 0.75
  • 1 分钟 / 5 分钟 / 15 分钟平均负载
  • 表示:正在运行 + 等待 CPU 的进程数

判断经验(必须会说):

  • 负载 ≈ CPU 核数:正常
  • 负载 > 2 × CPU 核数:系统过载

5. 负载高一定是 CPU 高吗?

❌ 不一定

可能原因:

  • CPU 计算密集
  • 磁盘 IO 等待(D 状态)
  • 内存不足,频繁 swap
topiostat -xm 1 5vmstat 1

三、进程管理

6. 如何查看系统所有进程?ps aux 和 ps -ef 区别?

ps auxps -eftop
  • ps aux:看 CPU / 内存占用
  • ps -ef:看父子进程关系(排障更重要)

7. STAT 状态位 S / D / Z / R 分别代表什么?

  • R:运行或就绪
  • S:可中断睡眠
  • D:不可中断睡眠(IO 等待,危险信号)
  • Z:僵尸进程

8. 什么是僵尸进程?如何处理?

定义:

子进程已退出,但父进程未回收状态信息

ps -ef | grep defunct

正确处理方式: 1️⃣ 找父进程 PPID 2️⃣ kill 父进程或重启服务

僵尸进程 不能直接 kill(必考点)


四、磁盘与文件系统(高频实战)

9. df 和 du 不一致,磁盘满了但找不到文件?

核心原因:

文件被删除,但仍被进程占用(FD 未释放)

lsof | grep deleted

解决方案:

  • 重启进程(推荐)
  • kill 占用进程

10. 如何查看磁盘、分区、IO 状态?

lsblkdf -hdf -iiostat -xdm 1 5iotop

面试加分点:

  • inode 满也会导致写失败
  • iostat 中 %util 接近 100% 表示 IO 瓶颈

五、网络基础

11. 如何判断网卡是否连通交换机?

ethtool eth0
Link detected: yes

12. DNS 如何临时 / 永久配置?

临时:

echo"nameserver 8.8.8.8" >> /etc/resolv.conf

永久(CentOS):

DNS1=8.8.8.8DNS2=114.114.114.114

六、系统版本与安全(常问)

13. 查看内核和发行版

uname -rcat /etc/os-release

14. SELinux 如何临时 / 永久关闭?

setenforce 0
SELINUX=disabled


七、文件句柄(File Descriptor,必考)

15. 什么是文件句柄(FD)?

标准回答:

文件句柄(File Descriptor)是 Linux 内核用于标识一个已打开文件或资源的非负整数。

面试官认可的补充:

  • 每个进程都有独立的 FD 表

  • 除了普通文件,socket / pipe / 设备 都会占用 FD

  • 默认已打开的 FD:

    • 0:stdin
    • 1:stdout
    • 2:stderr
ls -l /proc/PID/fd

16. too many open files 是什么原因?

本质原因:

进程打开的文件数超过系统或用户允许的最大 FD 数

常见触发场景(面试重点):

  • Web 服务高并发(大量 socket)
  • 程序 FD 泄漏(打开不关闭)
  • 日志文件频繁切割但进程未重启

17. 如何查看和修改最大文件句柄数?

查看

ulimit -n                    # 当前用户cat /proc/sys/fs/file-max    # 系统级

临时修改(当前会话)

ulimit -n 65535

永久修改(生产必会)

# /etc/security/limits.conf* soft nofile 65535* hard nofile 65535

面试加分点:soft 是警告阈值,hard 是绝对上限


八、内存管理与 Swap(高频追问)

18. free -h 中 available 和 free 的区别?

free -h
  • free:当前完全未使用的内存
  • available:系统可立即分配的内存(面试关键)

Linux 会尽可能使用内存做 cache,这是性能优化,不是浪费。


19. Swap 是什么?什么时候会用到?

定义:

Swap 是磁盘上的虚拟内存,用于缓解物理内存不足

什么时候用到(真实场景):

  • 内存突增
  • 防止 OOM Kill

缺点(一定要说):

  • 磁盘远慢于内存
  • 大量 swap 会导致系统卡顿
swapon -svmstat 1

20. OOM Kill 是什么?

当系统内存耗尽时,内核会主动杀死某些进程以自保

dmesg | grep -i oom

面试官追问:怎么避免?

  • 合理限制进程内存
  • 调整 swap
  • 容器设置 memory limit

九、磁盘与 IO(必问实战)

21. df 显示磁盘满,但 du 查不到?

100% 高频题

原因:

文件被删除,但仍被进程占用(FD 未释放)

lsof | grep deleted

解决思路(一定要按顺序说): 1️⃣ 找到占用进程 2️⃣ 重启服务(推荐) 3️⃣ kill 进程(慎用)


22. inode 满了会发生什么?

现象:

  • df -h 还有空间
  • 无法创建新文件
df -i

常见原因:

  • 海量小文件
  • 日志未清理

23. 如何判断 IO 是否是瓶颈?

iostat -xdm 1 5iotop

重点指标(面试必说):

  • %util → 接近 100%:IO 饱和
  • await → 请求等待时间

十、真实生产故障场景题(核心)

24. 线上服务器磁盘突然满了,你怎么排查?

标准回答模板(非常重要):

1️⃣ df -h / df -i(确认是空间还是 inode) 2️⃣ du -sh /* 找大目录 3️⃣ lsof | grep deleted(必查) 4️⃣ 清理日志 / 重启服务

面试官听到第 3 步,基本就点头了


25. 服务器 load 很高,但 CPU 不高,可能原因?

正确答案:

  • IO 等待(D 状态进程)
  • 内存不足 swap
topiostatvmstat 1

26. 服务突然变慢,但没挂,怎么排查?

高分回答思路:

  • 看负载
  • 看 IO
  • 看 FD
  • 看网络连接数
ss -slsof | wc -l

点个赞吧

 点击关注公众号,阅读更多精彩内容

往期内容推荐
没有外网也能升级 OpenSSH?RPM 离线包制作全流程实战
国产操作系统崛起!麒麟 V10 SP3 安装与使用指南
Harbor 部署与使用手册(保姆级教程)
Dockerfile 实战:从 0 构建你的第一份企业级镜像(含多阶段构建神器)
从零到实战:一次 Jenkins Pipeline 重构的完整思考过程
Jenkins 最稳部署指南(含版本选择、Compose 部署、插件推荐)

以上内容仅为作者个人观点,仅供交流与探讨,欢迎各位读者在留言区理性讨论与交流。

最新文章

随机文章