六、Linux 实操配套理论
⭐⭐⭐⭐⭐ Linux 运维、Java 后端、云计算、Docker、K8s 面试高频章节
本章重点:
- Linux 用户接口
- Shell
- 系统调用
- Linux 内核基础架构
- 虚拟化技术
- 容器技术
- Docker 底层原理(Namespace、Cgroups、UnionFS)
一、Linux 用户接口(User Interface)
什么是用户接口?
用户接口(User Interface,UI):
用户与操作系统进行交互的方式。
简单来说:
我们不能直接操作 Linux 内核。
而是:
用户 ↓ 用户接口 ↓ Linux 内核 ↓ 硬件
Linux 主要有两种接口:
- 图形界面(GUI)
- 命令行(Shell)
服务器环境:
基本都是:
Shell。
二、GUI(图形界面)
GUI:
Graphical User Interface。
例如:
Ubuntu:
桌面 ↓ 鼠标 ↓ 窗口
优点:
- 易上手
- 操作简单
缺点:
- 占资源
- 不适合服务器
因此:
企业服务器:
一般不会安装 GUI。
三、Shell(★★★★★)
Shell:
Linux 最重要的用户接口。
定义:
Shell 是用户与 Linux 内核之间的命令解释器。
例如:
输入:
bashls
Shell:
解析:
ls ↓ 系统调用 ↓ Linux Kernel ↓ 读取目录 ↓ 返回结果
所以:
Shell:
不是内核。
只是:
命令解释器。
为什么叫 Shell(外壳)?
Linux:
用户 ↓ Shell(外壳) ↓ Kernel(内核) ↓ 硬件
Shell:
包裹着:
内核。
因此:
叫:
Shell。
四、Shell 的工作过程(★★★★★)
例如:
输入:
bashmkdir test
执行流程:
用户输入命令 ↓ Shell解析 ↓ 系统调用 ↓ Kernel ↓ 创建目录 ↓ 返回结果
整个过程中:
真正完成工作的:
是:
Linux Kernel。
Shell:
只是:
负责解释命令。
五、常见 Shell
Linux:
支持:
很多 Shell。
例如:
| Shell | 特点 |
|---|---|
| Bash | 默认,最常用 |
| Zsh | 功能丰富,支持自动补全 |
| Sh | 最早版本 |
| Fish | 用户体验友好 |
企业:
99%:
使用:
Bash。
查看:
bashecho $SHELL
例如:
/bin/bash
六、Shell 常用命令(★★★★★)
查看目录
bashpwd
查看文件
bashls ls -l ls -a
切换目录
bashcd cd .. cd ~
创建目录
bashmkdir demo
删除目录
bashrm -rf demo
创建文件
bashtouch hello.txt
查看文件
bashcat hello.txt more hello.txt less hello.txt
查找文件
bashfind locate
查看进程
bashps -ef
实时:
bashtop
查看磁盘
bashdf -h
查看内存
bashfree -h
网络
bashping ifconfig ip addr
七、系统调用(★★★★★)
Shell:
本身:
不能创建文件。
例如:
输入:
bashtouch hello.txt
实际上:
执行:
Shell ↓ open() ↓ write() ↓ close()
这些:
都是:
系统调用。
常见系统调用
Linux:
copen() read() write() close() fork() exec() mmap() socket()
Java:
例如:
javanew File()
最终:
也会:
调用:
Linux:
open()
八、Linux 内核(Kernel)(★★★★★)
Linux:
真正核心:
就是:
Kernel。
Kernel:
一直运行。
负责:
- CPU 调度
- 内存管理
- 文件系统
- 网络
- 驱动
- 安全
没有 Kernel:
Linux:
无法运行。
九、Linux 内核架构(★★★★★)
Linux:
属于:
宏内核(Monolithic Kernel)。
整体结构:
用户程序 ↓ Shell ↓ 系统调用 ↓ Linux Kernel ├── 进程管理├── 内存管理├── 文件系统├── 网络协议栈├── 设备驱动└── 安全模块 ↓ 硬件
为什么叫宏内核?
因为:
绝大多数:
功能:
都在:
Kernel 内部。
例如:
文件系统 网络 驱动 调度
都属于:
Kernel。
优点:
- 性能高
- 系统调用快
缺点:
- 一个模块出错可能影响整个内核
- 调试复杂
微内核(了解)
例如:
QNX Minix
特点:
只保留:
最基本:
功能。
其他:
放到:
用户空间。
优点:
稳定。
缺点:
性能较低。
宏内核 vs 微内核
| 项目 | 宏内核 | 微内核 |
|---|---|---|
| 性能 | 高 | 较低 |
| 稳定性 | 一般 | 更高 |
| Linux | ✔ | ✘ |
| Windows(现代) | 混合架构 | - |
十、虚拟化(Virtualization)(★★★★★)
什么是虚拟化?
一台电脑:
模拟:
多台电脑。
例如:
物理服务器 ↓ VMware ↓ Ubuntu CentOS Windows
三个:
互不影响。
为什么需要?
以前:
一台服务器:
只能:
运行:
一个系统。
资源:
浪费。
虚拟化:
可以:
一台服务器 ↓ 多个虚拟机
资源利用率:
提高。
十一、虚拟机(Virtual Machine)
例如:
Windows ↓ VMware ↓ CentOS
CentOS:
认为:
自己:
拥有:
CPU
内存
磁盘
实际上:
都是:
虚拟出来的。
虚拟化组成
物理硬件 ↓ Hypervisor(虚拟化层) ↓ VM1 VM2 VM3
常见 Hypervisor
| 软件 | 类型 |
|---|---|
| VMware ESXi | 企业级 |
| VMware Workstation | 桌面 |
| KVM | Linux 原生 |
| Xen | 云平台 |
| Hyper-V | Windows |
十二、虚拟机特点
优点:
- 完整操作系统
- 隔离性强
- 安全
缺点:
- 启动慢
- 占内存
- 占磁盘
例如:
CentOS:
可能:
需要:
2GB RAM
十三、容器(Container)(★★★★★)
容器:
不是:
模拟电脑。
而是:
共享:
宿主机:
Linux Kernel。
例如:
Docker ↓ Container1 Container2 Container3
都:
共用:
Kernel。
为什么快?
虚拟机:
应用 ↓ Guest OS ↓ Hypervisor
容器:
应用 ↓ Docker ↓ Linux Kernel
没有:
Guest OS。
所以:
启动:
几秒。
甚至:
几百毫秒。
十四、Docker 底层原理(★★★★★)
Docker:
为什么:
容器之间:
互不影响?
因为:
Linux:
提供:
两个核心技术。
① Namespace(命名空间)
Namespace:
负责:
隔离。
例如:
容器A:
PID=1
容器B:
PID=1
互相:
看不到。
隔离:
包括:
- PID
- Network
- Mount
- IPC
- UTS
- User
因此:
每个容器:
认为:
自己:
独占:
整个系统。
② Cgroups(Control Groups)
Namespace:
解决:
隔离。
Cgroups:
解决:
资源限制。
例如:
Docker:
限制:
CPU 2核
Memory 2GB
超过:
不能使用。
③ UnionFS(联合文件系统)
Docker:
镜像:
为什么:
那么小?
因为:
采用:
UnionFS。
例如:
Ubuntu Layer ↓ JDK Layer ↓ Tomcat Layer ↓ App Layer
多个:
镜像:
共享:
相同层。
因此:
节省空间。
十五、虚拟机与容器区别(★★★★★)
| 项目 | 虚拟机 | 容器 |
|---|---|---|
| 操作系统 | 独立 Guest OS | 共享宿主机 Kernel |
| 启动速度 | 分钟级 | 秒级甚至毫秒级 |
| 内存占用 | 大 | 小 |
| 隔离性 | 更强 | 较强 |
| 性能 | 略低 | 接近原生 |
| 部署速度 | 慢 | 快 |
口诀:
虚拟机模拟整台电脑,容器共享内核运行应用。
十六、Linux 与 Docker 的关系
Docker:
并不是:
操作系统。
而是:
Linux:
上的:
容器引擎。
工作流程:
Docker CLI ↓ Docker Daemon ↓ Linux Kernel ↓ Namespace ↓ Cgroups ↓ 容器
因此:
Docker:
底层:
依赖:
Linux Kernel。
十七、本章知识关系图(★★★★★)
用户 ↓ Shell ↓ 系统调用 ↓ Linux Kernel ├── CPU管理├── 内存管理├── 文件系统├── 网络└── 驱动 ↓ 硬件
容器:
Docker ↓ Namespace(隔离) ↓ Cgroups(资源限制) ↓ Linux Kernel
虚拟机:
Hypervisor ↓ Guest OS ↓ 应用
十八、本章重点总结(必背)
Linux 用户接口
- GUI
- Shell(最重要)
Shell
作用:
- 解释命令
- 调用系统调用
- 与 Kernel 交互
Linux 内核
负责:
- CPU 调度
- 内存管理
- 文件系统
- 网络协议
- 驱动管理
- 安全控制
Linux:
属于:
宏内核(Monolithic Kernel)。
虚拟化
Hypervisor ↓ 多个虚拟机 ↓ 多个 Guest OS
容器
Docker ↓ 多个容器 ↓ 共享 Linux Kernel
Docker 三大底层技术
| 技术 | 作用 |
|---|---|
| Namespace | 资源隔离 |
| Cgroups | CPU、内存等资源限制 |
| UnionFS | 镜像分层与共享 |
口诀:
Namespace 做隔离,Cgroups 控资源,UnionFS 管镜像。
面试/考试高频问题
Q1:Shell 和 Linux 内核是什么关系?
答: Shell 是 Linux 的命令解释器,负责接收用户命令并调用系统调用;Linux Kernel 是操作系统内核,负责真正执行进程管理、内存管理、文件系统和设备管理等核心功能。Shell 本身并不直接操作硬件。
Q2:为什么 Linux 属于宏内核?
答: 因为 Linux 将进程管理、内存管理、文件系统、网络协议栈和设备驱动等大部分功能都运行在内核空间,系统调用效率高、性能好,因此属于宏内核(Monolithic Kernel)。
Q3:虚拟机和容器有什么区别?
答: 虚拟机通过 Hypervisor 虚拟完整的硬件环境,每个虚拟机都拥有独立的 Guest OS;容器则共享宿主机 Linux Kernel,仅隔离应用及其运行环境,因此容器启动更快、资源占用更少、性能更接近原生。
Q4:Docker 为什么启动这么快?
答: Docker 容器不需要启动完整操作系统,而是直接共享宿主机 Linux Kernel,仅创建隔离环境,因此启动速度通常只需几秒甚至几百毫秒。
Q5:Docker 底层依赖哪些 Linux 技术?
答:
- Namespace:实现进程、网络、文件系统等资源隔离。
- Cgroups:限制 CPU、内存、磁盘 IO 等资源使用。
- UnionFS:实现镜像分层存储,提高镜像复用率,减少磁盘占用。
面试口诀: Namespace 做隔离,Cgroups 控资源,UnionFS 管镜像。

