✅ 覆盖:基础概念、文件系统、安全加固、性能排查、常用命令、实战场景等
🎯 适用于运维工程师、后端开发、DevOps、SRE 等岗位
一、Linux 基础与概述
1. 什么是 Linux?
Linux 是一套免费、开源、类 Unix的多用户、多任务操作系统,支持多线程和多 CPU。
- 基于 POSIX 标准
- 继承 Unix "一切皆文件" 和 "网络为核心" 的设计思想
- 广泛用于服务器、嵌入式、云计算等领域
💡 Web 项目几乎全部部署在 Linux 上。
2. Windows 和 Linux 的区别?
| 对比项 | Windows | Linux |
|---|---|---|
| 授权 | 商业闭源,需付费 | 开源免费 |
| 用途 | 桌面娱乐、办公 | 服务器、开发、高性能计算 |
| 界面 | 图形化为主,效果绚丽 | CLI 为主,GUI 可选 |
| 性能 | 资源占用高 | 轻量高效,可深度优化 |
| 安全性 | 易受病毒攻击 | 权限控制严格,更安全 |
✅ 普通用户用 Windows,开发者/运维用 Linux。
3. Unix 和 Linux 的区别?
| 特性 | Unix | Linux |
|---|---|---|
| 开源性 | 闭源商业软件(如 AIX、Solaris) | 完全开源(GPL 协议) |
| 跨平台 | 依赖特定硬件(如 Sun SPARC) | 支持 x86/ARM 等多种架构 |
| 成本 | 昂贵 | 免费 |
| 用户群体 | 银行、电信等大型企业 | 个人、中小企业、互联网公司 |
| GUI | 多为纯命令行 | 支持 KDE、GNOME 等桌面环境 |
🌟 Linux 是 Unix 的"平民版",功能强大且免费。
4. 什么是 Linux 内核?
内核是 Linux 系统的核心,负责:
- 内存管理
- 进程调度
- 设备驱动
- 文件系统管理
- 系统调用接口
🔧 用户不能直接操作硬件,必须通过内核。
5. Linux 的基本组件有哪些?
- 内核(Kernel):核心控制
- Shell:命令解释器(如 Bash)
- GUI(可选):图形界面(如 GNOME)
- 系统工具 :
ls,cp,grep等 - 应用程序:Nginx、MySQL、Docker 等
6. Linux 体系结构?
分为两大空间:
| 空间 | 组件 |
|---|---|
| 用户空间(User Space) | 应用程序、C 库(glibc) |
| 内核空间(Kernel Space) | 系统调用接口、内核、硬件相关代码 |
🔒 分离目的:保护内核安全,防止用户程序直接操作硬件。
🔄 切换方式:系统调用 或 硬件中断。
7. BASH 和 DOS 的区别?
| 特性 | BASH(Linux) | DOS(Windows) |
|---|---|---|
| 大小写 | 区分大小写 | 不区分 |
| 路径分隔符 | / 是目录分隔符 |
\ 是目录分隔符 |
| 转义字符 | \ 用于转义 |
/ 用于参数 |
| 文件名规则 | 无限制 | 8.3 格式(如 FILENA~1.TXT) |
8. Linux 开机启动过程?
- BIOS 自检(POST)
- 加载 MBR 中的引导程序(GRUB/LILO)
- GRUB 加载 Linux 内核
- 内核初始化硬件,挂载根文件系统
- 启动第一个进程
init(PID=1) - 根据
/etc/inittab进入运行级别 - 启动服务,显示登录界面
⚙️ 现代系统多用 systemd 替代 init。
9. Linux 默认运行级别?
| 级别 | 说明 |
|---|---|
| 0 | 关机 |
| 1 | 单用户模式(维护用) |
| 2 | 多用户,无网络 |
| 3 | 多用户,命令行(服务器默认) |
| 4 | 未使用 |
| 5 | 多用户,图形界面(桌面默认) |
| 6 | 重启 |
💡 CentOS 7+ 使用
systemctl get-default查看。
10. Linux 进程间通信(IPC)方式?
- 管道(pipe):匿名,父子进程通信
- 命名管道(FIFO):有路径,任意进程通信
- 信号(signal) :如
kill -9 - 消息队列(Message Queue)
- 共享内存(Shared Memory):最快
- 信号量(Semaphore):用于同步
- 套接字(Socket):跨网络通信
11. 重要系统日志文件?
/var/log/messages:系统综合日志(最重要)/var/log/secure:SSH 登录日志/var/log/cron:定时任务日志/var/log/maillog:邮件日志/var/log/dmesg:内核启动日志
🔍 入侵排查首选
/var/log/secure和messages。
12. 安装多个桌面环境有帮助吗?
- 不推荐!
- 不同桌面(KDE/GNOME/XFCE)可能冲突
- 某些应用只兼容特定环境
- 增加资源消耗和安全风险
✅ 服务器应禁用 GUI,桌面用户选一个即可。
13. 什么是交换空间(Swap)?
当物理内存(RAM)不足时,系统将部分内存数据临时存放到磁盘的 Swap 分区,以避免 OOM(Out of Memory)。
- 类似 Windows 的虚拟内存
- 速度远慢于 RAM,仅作应急
⚠️ 云服务器常关闭 Swap(如阿里云建议)。
14. 什么是 root 账户?
- 超级管理员账户
- UID = 0
- 拥有系统最高权限
- 可创建/删除用户、修改任何文件、安装软件等
🔒 生产环境应禁止 root 直接登录!
15--18. 常见术语解释
| 术语 | 说明 |
|---|---|
| LILO | 早期 Linux 引导加载器(现多用 GRUB) |
| BASH | Bourne Again Shell,Linux 默认 shell |
| CLI | 命令行界面,高效、低资源 |
| GUI | 图形用户界面,易用但资源消耗大 |
19--20. 开源与 GNU
- 开源优势:免费、透明、社区协作、快速迭代
- GNU 项目:由 RMS 发起,提供自由软件生态(如 GCC、Glibc),Linux 内核 + GNU 工具 = 完整操作系统
🐧 正确称呼应为 GNU/Linux。
二、文件系统与磁盘管理
21. Linux 文件系统核心思想?
"一切皆文件"(Everything is a file)
- 普通文件、目录、设备(
/dev/sda)、进程(/proc/123)都视为文件 - 通过统一接口(open/read/write)访问
22. Linux 目录结构(FHS 标准)
| 目录 | 作用 |
|---|---|
/bin |
基础命令(ls, cp) |
/sbin |
系统管理命令(ifconfig, reboot) |
/etc |
配置文件 |
/home |
普通用户家目录 |
/root |
root 用户家目录 |
/usr |
应用程序(类似 Windows Program Files) |
/opt |
第三方软件(如 Tomcat) |
/var |
可变数据(日志、缓存) |
/tmp |
临时文件 |
/proc |
虚拟文件系统,反映内核和进程状态 |
/dev |
设备文件 |
/lib |
系统库文件 |
/boot |
启动文件(内核、grub) |
/mnt |
临时挂载点 |
/lost+found |
文件系统修复残留文件 |
23. 什么是 inode?
- inode(索引节点) 存储文件的元信息:
- 文件大小、权限、所有者、时间戳
- 指向数据块的指针(13 个直接/间接块)
- 文件名 ≠ inode,文件名只是目录项到 inode 的映射
🔗 删除文件 = 删除目录项,inode 和数据块在无引用时才释放。
24. 硬链接 vs 软链接(符号链接)
| 特性 | 硬链接 | 软链接 |
|---|---|---|
| inode | 与原文件相同 | 新建 inode |
| 跨分区 | ❌ 不支持 | ✅ 支持 |
| 目录链接 | ❌ 仅 root 可创建 | ✅ 支持 |
| 原文件删除 | 数据仍存在(链接数 > 0) | 链接失效(悬空) |
| 命令 | ln file link |
ln -s file link |
✅ 实际多用软链接(灵活、安全)。
25. RAID 是什么?
RAID(独立磁盘冗余阵列):将多个硬盘组合成逻辑卷,提升性能或可靠性。
| 级别 | 特点 |
|---|---|
| RAID 0 | 条带化,高性能,无冗余 |
| RAID 1 | 镜像,高可靠,容量减半 |
| RAID 5 | 条带+奇偶校验,兼顾性能与容错(坏1块盘可恢复) |
| RAID 10 | RAID 1+0,高性能+高可靠,成本高 |
☁️ 云环境多用云盘(自动三副本),无需手动 RAID。
三、安全加固
26. Linux 初始化后安全措施?
- 禁用 root 登录 ,创建普通用户 +
sudo - 修改 SSH 端口(如 22 → 22222)
- 启用密钥登录,禁用密码认证
- 配置防火墙 (
iptables/firewalld) - 关闭 SELinux(或设为 permissive)
- 安装 fail2ban 防暴力破解
- 限制 IP 访问(仅允许可信 IP 登录)
- 最小权限原则 :Web 服务用
www用户运行 - 定期更新系统 :
yum update
27. CC 攻击 vs DDOS 攻击?
| 攻击类型 | 原理 | 防御 |
|---|---|---|
| CC 攻击 | 模拟大量用户请求动态页面(如登录接口) | WAF、限流、验证码 |
| DDOS 攻击 | 利用僵尸网络耗尽带宽/CPU | 流量清洗(ISP/云厂商提供) |
🌪️ 两者本质都是"资源耗尽型"拒绝服务攻击。
28. SQL 注入是什么?如何防御?
- 原理:用户输入未过滤,拼接到 SQL 语句中执行
- 危害:脱库、删表、提权
- 防御 :
- 使用预编译语句(PreparedStatement)
- 输入验证 + 白名单
- Web 层部署 WAF(如 Nginx + ModSecurity)
29. Shell 脚本是什么?
- 包含一系列命令的文本文件(
.sh) - 用于自动化任务:备份、监控、部署等
- 执行方式:
bash script.sh或chmod +x script.sh && ./script.sh
四、实战与运维
30. 如何选择 Linux 发行版?
| 场景 | 推荐系统 |
|---|---|
| 桌面用户 | Ubuntu |
| 企业服务器 | CentOS / Rocky Linux / AlmaLinux |
| 高安全性 | Debian / FreeBSD |
| 新技术尝鲜 | Fedora |
| 商业支持 | RHEL / SUSE |
✅ 互联网公司主流:CentOS 7/8 → Rocky Linux(替代 CentOS)
31. 如何规划一台 Linux 主机?
- 明确用途:Web / DB / 缓存 / 日志?
- 硬件选型:CPU/内存/磁盘/网络
- 系统安装 :最小化安装 + 分区(
/,/var,/home分离) - 安全加固:如上第 26 条
- 性能调优:内核参数、文件描述符、TCP 优化等
32. 用户反馈网站访问慢,如何排查?
排查步骤:
- 确认问题范围:自己能否复现?是否全用户慢?
- 浏览器调试:看是 HTML/CSS/JS/图片/接口慢?
- 服务器资源 :
top/htop:CPU、内存sar/iftop:网络带宽iostat:磁盘 I/O
- 应用层 :
- Web 日志(Nginx access.log)
- 慢查询日志 (MySQL
slow_query_log)
- 外部因素:CDN、DNS、跨运营商
解决方案:
- 带宽不足 → 升级带宽 or CDN
- 数据库慢 → 优化 SQL、加缓存(Redis)、读写分离
- 代码问题 → Profiling、异步化
- 架构瓶颈 → 微服务、负载均衡
33. Linux 性能调优方法?
- 关闭无用服务(
systemctl disable xxx) - 禁用 GUI(服务器)
- 调整内核参数(
/etc/sysctl.conf):net.core.somaxconnvm.swappinessfs.file-max
- 文件系统优化:ext4 → xfs,挂载选项
noatime - 网络调优:TCP 缓冲区、TIME_WAIT 复用
五、常用命令速查(高频考点)
34. 核心命令分类
文件操作
cd /path # 切换目录
pwd # 显示当前路径
ls -alh # 列出详细信息(含隐藏文件)
touch file # 创建空文件
mkdir -p dir # 递归创建目录
cp -r src dst # 复制目录
mv old new # 移动/重命名
rm -rf dir # 强制删除(慎用!)
文件查看
cat file # 全文输出(小文件)
more file # 分页查看(不支持回滚)
less file # 分页查看(支持上下滚动)
tail -f log # 实时查看日志
head -n 10 file # 查看前10行
搜索与过滤
grep "error" log # 搜索关键词
ps aux | grep nginx # 查找进程
find / -name "*.log" # 全局查找文件
压缩解压
tar -zcvf archive.tar.gz dir/ # 压缩
tar -zxvf archive.tar.gz # 解压
系统状态
top # 实时进程监控
free -m # 内存使用
df -h # 磁盘空间
netstat -tunlp # 查看端口占用
ss -tuln # 更快的 netstat 替代
编辑器(vim)
i→ 插入模式Esc→ 命令模式:wq→ 保存退出:q!→ 强制退出/keyword→ 搜索dd→ 删除一行yy+p→ 复制粘贴
其他实用命令
ping ip # 测试连通性
ifconfig / ip a # 查看 IP
date # 查看时间
ntpdate ntp.aliyun.com # 同步时间
reboot # 重启
halt # 关机
rz / sz # 上传下载文件(需 lrzsz)