面试官问我Linux,我慌了?别怕,这篇《Linux面试通关指南》带你从入门到封神!

前言

“要求熟悉Linux操作系统”——这行字几乎出现在所有后端开发、运维、测试、数据工程师的招聘要求(JD)里。但“熟悉”是一个非常模糊的词,到底要熟悉到什么程度?是会用 lscd 就行,还是需要能手写内核模块?

很多同学在面试时,被面试官一个场景题就问懵了,比如“服务器CPU突然100%,你怎么排查?”。这背后考察的,正是你对Linux系统深入、体系化的理解。

本文将面试中关于Linux的考查点,划分为五个由浅入深的层次。你可以对照这个体系,检查自己的知识盲区,并进行针对性的学习和准备。这不仅是一份面试指南,更是一份帮你构建Linux知识体系的路线图。


第一层:Linux生存法则 - 日常操作与基础命令

这是在Linux环境下能“活下来”的最低要求,也是后续一切操作的基础。

  • 文件与目录核心操作
    • 文件系统结构 (FHS):你需要知道Linux的主要目录是干什么的,而不是把所有东西都放 /home
      • /etc:存放系统和应用的配置文件。
      • /var:存放经常变化的文件,如日志 (/var/log)、缓存。
      • /usr:存放用户安装的程序和文件。
      • /home:用户主目录。
      • /tmp:临时文件目录。
    • 文件操作三剑客cp, mv, rm。除了基本用法,务必掌握常用参数:
      • -r:递归操作,用于目录。
      • -f:强制执行,无提示。
      • -i:交互式,操作前询问。
    • 文件查找
# 在/var/log目录下查找所有以.log结尾的文件
find /var/log -name "*.log"
# 在Nginx错误日志中查找所有包含"error"的行
grep -i "error" /var/log/nginx/error.log
      • find:功能强大,可按名称、大小、时间、权限等多种条件查找。实时遍历硬盘,速度较慢但精准。
      • grep:在文件中搜索文本内容,支持正则表达式,是排查日志、配置的神器。
  • 权限管理
    • 读懂权限:理解 rwx (读、写、执行) 对文件和目录的意义。能看懂 drwxr-xr-x 这种表示法。
    • 修改权限:掌握 chmod 命令的两种用法。
      • 数字法:chmod 755 file.sh (rwx r-x r-x)
      • 符号法:chmod u+x file.sh (给用户user增加执行权限)
    • 修改属主/属组chown user:group file
  • 文本查看与处理
# 统计当前目录下的文件个数
ls -l | grep "^-" | wc -l
    • 查看命令cat, more, less, head, tail。面试高频点是 tail -f,用于实时监控日志文件增长。
    • 管道 |:将前一个命令的输出,作为后一个命令的输入。这是Linux命令组合的精髓。
    • 重定向 >>>
      • >:覆盖写入文件。
      • >>:追加写入文件。
    • 组合示例

第二层:系统管理员之眼 - 进程与资源监控

能熟练操作文件还不够,你得能“看懂”一台服务器的运行状态。

  • 进程管理
    • 查看进程ps 命令是基础。
      • ps aux (BSD风格):显示所有用户的进程,信息详细。
      • ps -ef (System V风格):功能类似,格式不同。
    • 实时监控top / htop (推荐)。你需要看懂关键指标:
      • load average:系统负载,三个数值分别代表1、5、15分钟的平均负载。
      • %CPU:CPU使用率。
      • %MEM:内存使用率。
    • 结束进程kill 命令。
      • kill PID:默认发送 TERM (15) 信号,让程序优雅退出。
      • kill -9 PID:发送 KILL (9) 信号,强制杀死进程。这是最后的手段
  • 资源监控
    • 磁盘空间
      • df -h:查看磁盘分区的使用情况。
      • du -sh *:查看当前目录下各文件/文件夹的大小。
    • 内存使用free -h。理解 used, free, buff/cache 的区别很重要。
    • 系统信息uname -a (内核信息), lscpu (CPU信息)。
  • 服务管理 (Systemd)
# 启动、停止、重启Nginx服务
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx

# 查看服务状态
sudo systemctl status nginx

# 设置开机自启动
sudo systemctl enable nginx
    • 现代Linux发行版大多使用 systemd 进行服务管理,systemctl 是核心命令。

第三层:网络世界的侦探 - 网络配置与诊断

现代应用几乎都离不开网络,网络排错是面试高频场景。

  • 网络状态查看
# 查看哪些进程在监听TCP端口
sudo ss -tlnp
    • IP地址ip addr (推荐) 或 ifconfig (旧)。
    • 路由表ip routeroute -n
    • 监听端口ss -tlnp (推荐) 或 netstat -tlnpss 更快,信息更简洁。
  • 网络诊断工具
# 检查Baidu的80端口是否可访问
telnet www.baidu.com 80
    • ping:检查网络连通性和延迟。
    • telnet / nc:检查远程主机的特定端口是否开放。
    • curl:强大的HTTP客户端,可用于测试API接口。
    • nslookup / dig:用于DNS查询,排查域名解析问题。
  • 防火墙:了解 iptablesfirewalld 的基本概念,知道如何查看规则、开放/关闭端口。

第四层:效率的魔法 - Shell脚本与自动化

这一层是区分普通使用者和高效工程师的分水岭。

  • Shell脚本基础
    • 基本结构#!/bin/bash,变量,if/elsefor/while 循环。
    • 特殊变量$? (上个命令的退出状态码,0为成功), $# (参数个数), $@ (所有参数), $0 (脚本名), $1 (第一个参数)。
  • 文本处理三剑客 (进阶)
    • grep:已在第一层提到。
    • sed:流编辑器,擅长对文本进行批量替换、删除、插入等操作。
    • awk:强大的文本分析工具,擅长按列处理文本,进行计算和格式化输出。
  • 定时任务
# 分 时 日 月 周 命令
# 每天凌晨3点备份数据库
0 3 * * * /path/to/backup_script.sh
    • crontab:用于设置周期性执行的任务。必须掌握其配置格式。

第五层:王者之路 - 场景化排错与实战演练

这是面试的“最终BOSS”,考察你的综合运用能力和解决问题的思路。以下是几个经典场景,你需要能够清晰、有条理地回答出来。

场景一:一台线上服务器CPU使用率突然飙升到100%,你会如何排查?

标准回答思路:

  1. 定位进程:使用 top 命令,按 P 键(大写)按CPU使用率排序,找到占用CPU最高的进程及其PID。
  2. 分析进程
    • 如果是业务进程(如Java应用),使用 jstack PID 查看线程堆栈,定位到具体的高CPU消耗线程。
    • 如果是异常进程,ps aux | grep PID 查看其完整命令,判断是否为恶意脚本或程序。
  1. 分析原因
    • 查看该进程的相关日志,分析是否有大量错误或异常请求。
    • 使用 strace -p PID 跟踪该进程的系统调用,看它在“忙”什么。
  1. 解决问题:根据分析结果,进行相应处理(杀死恶意进程、优化代码、重启服务等)。
场景二:用户反馈网站无法访问,你的排错思路是什么?

标准回答思路(从客户端到服务端,逐层排查):

  1. 客户端排查:在我自己电脑上 ping 域名,检查网络和DNS。
  2. DNS排查:使用 nslookupdig 域名,看是否能正确解析到服务器IP。
  3. 网络链路排查ping 服务器IP,检查网络是否可达。使用 telnet 服务器IP 端口 (如80/443),检查端口是否开放。
  4. 服务器排查
    • 登录服务器,ss -tlnp 查看服务端口是否在监听。
    • systemctl status nginx/httpd 查看Web服务是否正常运行。
    • 检查防火墙规则 (iptables -Lfirewall-cmd --list-all),看是否拦截了端口。
    • 查看Web服务器和应用服务器的访问日志和错误日志,定位具体问题。
场景三:一个脚本我手动执行是好的,但放到cron里就不工作了,可能是什么原因?

标准回答思路(经典问题):

  1. 环境变量问题cron 默认的环境变量非常少,可能找不到你在脚本中使用的命令。解决方案:在脚本中source ~/.bashrc,或在命令前使用绝对路径(如 /usr/bin/python)。
  2. 路径问题:脚本中使用了相对路径,而 cron 的执行目录不是你预期的目录。解决方案:在脚本开头 cd 到指定目录,或全部使用绝对路径。
  3. 权限问题:执行脚本的用户在 cron 环境下没有权限操作某些文件。
  4. 日志排查:将 cron 任务的输出重定向到日志文件,方便排查。* * * * * /path/to/script.sh >> /var/log/my_script.log 2>&1

总结

“熟悉Linux”从来不是指背诵几百个命令。面试官真正想看到的,是你面对未知问题时,能否利用Linux提供的工具集,形成一套清晰、逻辑化的排错思路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

996小白的进阶路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值