这是一份为您精心整理的 Linux 面试宝典涵盖了从基础命令到内核原理、故障排查及高并发场景下的实战经验,旨在帮助您在面试中从容应对。
🐧 Linux 面试宝典
核心基础与常用命令
文件与目录操作
ls -l:查看详细信息,重点解释权限字段(rwx),-rw-r--r--代表文件,drwxr-xr-x代表目录。chmod/chown:chmod 755 file:所有者可读可写可执行,组和其他人可读可执行。chown user:group file:修改文件所有者和组。
findvslocate:find:实时搜索,精确但慢(如find / -name ".log")。locate:基于数据库搜索,极快但可能有延迟(需updatedb)。
grep:文本搜索,常用参数-r(递归),-i(忽略大小写),-v(反向匹配),-n(显示行号)。
系统资源监控
top/htop:实时查看 CPU、内存、进程状态。- Load Average:三个数字分别代表 1分钟、5分钟、15分钟的平均负载。注意:负载高不等于 CPU 忙,也可能是 I/O 等待。
free -h:查看内存使用情况。- Buffer/Cache:Linux 会利用空闲内存做缓存以加速 I/O,这部分内存可以在需要时被回收,
available才是真正可用的内存。
- Buffer/Cache:Linux 会利用空闲内存做缓存以加速 I/O,这部分内存可以在需要时被回收,
df -h:查看磁盘空间使用率。- `du -sh `:查看当前目录下各文件或文件夹的大小。
iostat -x 1:查看磁盘 I/O 性能,关注%util(利用率)和await(平均等待时间)。
网络诊断
netstat -tlnp或ss -tlnp:查看端口监听状态及对应进程。curl -I http://...:查看 HTTP 响应头。ping:测试连通性。traceroute:追踪路由路径。tcpdump:抓包工具,用于分析网络协议细节。
权限与安全
权限体系
- r (Read), w (Write), x (Execute):分别对应读、写、执行权限。
- 特殊权限:
- SUID (4):执行时以文件所有者身份运行(如
passwd命令)。 - SGID (2):新文件继承目录的组权限。
- Sticky Bit (1):目录中用户只能删除自己的文件(如
/tmp)。
- SUID (4):执行时以文件所有者身份运行(如
软硬链接
- 硬链接 (Hard Link):指向同一个 inode 号,删除原文件不影响硬链接,不能跨文件系统,不能链接目录。
- 软链接 (Symbolic Link):类似 Windows 的快捷方式,指向路径,删除原文件后软链接失效。
进程管理
进程状态
- R (Running):正在运行或在运行队列中等待。
- S (Sleeping):中断休眠,等待事件完成(大多数进程处于此状态)。
- D (Disk Sleep):不可中断休眠,通常正在等待 I/O 完成。注意:此状态下的进程无法被
kill杀死。 - Z (Zombie):僵尸进程,进程已终止但未被父进程回收(
wait)。
常用命令
ps aux:查看进程快照。kill -9 PID:强制杀死进程(慎用,可能导致数据丢失)。kill -15 PID:正常终止进程(发送 SIGTERM 信号,允许进程清理资源)。nohup command &:后台运行进程,忽略挂起信号。screen/tmux:终端复用工具,防止 SSH 断开导致任务中断。
磁盘与文件系统
文件系统类型
- ext4:传统 Linux 文件系统,稳定。
- XFS:高性能,适合大文件和高并发 I/O(CentOS 7+ 默认)。
- Btrfs:支持快照、压缩、RAID。
LVM (逻辑卷管理)
- PV (Physical Volume):物理磁盘分区。
- VG (Volume Group):将多个 PV 组合成一个资源池。
-
LV (Logical Volume):从 VG 中划分出的逻辑卷,可动态扩容/缩容。
- 面试考点:如何在不卸载文件系统的情况下扩容?(
lvextend->resize2fs或xfs_growfs)。
网络协议与 TCP/IP
TCP 三次握手与四次挥手
- 三次握手:
- Client -> Server: SYN=1, seq=x
- Server -> Client: SYN=1, ACK=1, seq=y, ack=x+1
- Client -> Server: ACK=1, seq=x+1, ack=y+1
- 四次挥手:
- Client -> Server: FIN=1 (主动关闭)
- Server -> Client: ACK=1 (确认收到) -> 此时连接处于半关闭状态
- Server -> Client: FIN=1, ACK=1 (被动关闭)
- Client -> Server: ACK=1 (确认收到) -> 进入 TIME_WAIT 状态
关键状态
- TIME_WAIT:确保最后一个 ACK 到达对方,防止旧连接报文干扰新连接。面试高频:为什么会有 TIME_WAIT?如何优化?(调整
tcp_tw_reuse,tcp_fin_timeout)。 - CLOSE_WAIT:被动关闭方未调用
close(),通常意味着代码 Bug,连接泄漏。 - SYN_RECV:正在等待完成第三次握手,或遭受 SYN Flood 攻击。
HTTP 状态码
- 200:成功。
- 301/302:重定向。
- 403:禁止访问(权限问题)。
- 404:资源未找到。
- 500:服务器内部错误。
- 502/504:网关错误/超时(通常后端服务挂了或响应太慢)。
故障排查实战(高频场景)
场景 1:CPU 负载高
top查看是哪个进程占用 CPU 高。top -H -p <PID>查看该进程下哪个线程占用高。jstack <PID>(Java) 或gdb查看线程堆栈,定位代码热点。
场景 2:内存泄漏/不足
free -h查看可用内存。top按M键按内存排序,找出大内存进程。- 检查是否有大量 Buffer/Cache(正常现象,可忽略)。
- 对于 Java 应用,使用
jstat -gcutil <PID>分析 GC 情况。
场景 3:磁盘空间满
df -h查看哪个分区满。du -sh / | sort -rh | head -10找出大文件或目录。- 注意:如果文件已删除 (
rm) 但空间未释放,是因为进程仍持有文件句柄。- 解决:
lsof | grep deleted找到被删除但未释放的文件,重启对应进程或截断文件 (> filename)。
- 解决:
场景 4:网络连接问题
ping测试连通性。telnet <IP> <Port>或nc -zv <IP> <Port>测试端口通不通。netstat -an | grep <Port>查看连接状态。tcpdump抓包分析丢包或重传原因。
高级话题(加分项)
虚拟内存与 Swap
- Swappiness:控制内核使用 Swap 的倾向(0-100),数据库服务器通常设为 0 或 1。
- OOM Killer:当内存不足时,内核会杀死占用内存最多的进程以保护系统。
内核参数调优
net.ipv4.tcp_max_syn_backlog:SYN 队列长度。net.core.somaxconn:监听队列长度。fs.file-max:系统最大打开文件数。
日志分析
/var/log/messages或/var/log/syslog:系统日志。/var/log/secure:安全日志(登录失败等)。- ELK Stack:Elasticsearch, Logstash, Kibana,用于大规模日志收集与分析。
面试技巧建议
- STAR 法则:回答故障排查问题时,按照 Situation (背景), Task (任务), Action (行动), Result (结果) 的结构描述。
- 诚实原则:遇到不会的问题,可以说“这个细节我暂时不确定,但我推测可能是…”,展示你的推理能力。
- 结合业务:将 Linux 知识与具体业务场景结合(如:“我在处理高并发 Web 服务时,遇到了 TIME_WAIT 过多问题,通过调整内核参数解决了…”)。
- 动手实践:面试前务必在虚拟机或云服务器上实际操作一遍
top,netstat,grep,awk等命令,避免纸上谈兵。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/486412.html



