对应 Linux 面试题 50 道 第 1–20 题。
什么是 Linux
Linux 是免费开源、类 Unix 的多用户多任务操作系统,支持多线程与多 CPU,可运行 Unix 工具、应用程序与网络协议。Java Web 项目普遍部署在 Linux 服务器上。
Windows vs Linux vs Unix
| 维度 | Windows | Linux | Unix |
|---|---|---|---|
| 定位 | 民用娱乐/办公 | 开发部署/服务器 | 商业服务器 |
| 授权 | 商业 | 开源免费 | 商业授权 |
| 跨平台 | 较好 | 好 | 弱,多与硬件绑定 |
| 硬件要求 | 中等 | 较低 | 较苛刻 |
| 用户群体 | 普通用户 | 开发者/企业 | 银行、电信等 |
Linux 继承 Unix 设计思想,在普通 PC 上实现 Unix 特性,因开源更易普及。
内核与基本组件
内核是系统核心,负责:
- 系统内存管理
- 应用程序管理
- 硬件设备管理
- 文件系统管理
完整 Linux 系统还包括:Shell、GUI、系统实用程序与应用程序。
体系结构:用户空间与内核空间
┌─────────────────────────────────────┐│ 用户空间 (User Space) ││ ┌─────────────┐ ┌──────────────┐ ││ │ 用户应用程序 │ │ C 库 │ ││ └─────────────┘ └──────────────┘ │├─────────────────────────────────────┤│ 内核空间 (Kernel Space) ││ ┌──────────┐ ┌──────┐ ┌──────────┐ ││ │系统调用接口│ │ 内核 │ │平台相关代码│ ││ └──────────┘ └──────┘ └──────────┘ │└─────────────────────────────────────┘现代 CPU 有不同工作模式,为保护内核安全将系统分为两层。用户空间进入内核空间的方式:
- 系统调用(如 read、write、open)
- 硬件中断
Shell 与 CLI / GUI
- BASH(Bourne Again SHell):多数 Linux 默认 Shell,命令区分大小写,
/为目录分隔符 - CLI(命令行界面):键盘输入指令,省资源,熟记命令后效率高
- GUI(图形界面):鼠标操作,直观但占用更多资源
与 DOS 的区别:DOS 命令不区分大小写;DOS 中 \ 是目录分隔符;DOS 遵循 8.3 文件命名。
启动流程与运行级别
传统启动流程:
- BIOS 自检
- MBR 引导(GRUB/LILO)
- 加载 Linux 内核
- 运行 init(PID=1,现代系统多为 systemd)
- 进入运行级别 / target
- 登录终端
运行级别(传统 SysV):
| 级别 | 含义 |
|---|---|
| 0 | 关机 |
| 1 | 单用户模式 |
| 2 | 字符多用户(无网络) |
| 3 | 字符多用户 |
| 4 | 未分配 |
| 5 | 图形多用户 |
| 6 | 重启 |
systemd 用 target 替代,如 multi-user.target(类似 3)、graphical.target(类似 5)。
进程间通信(IPC)
Linux 支持的 IPC 方式:
- 管道(pipe)、流管道、有名管道(FIFO)
- 信号(signal)
- 消息队列
- 共享内存
- 信号量
- 套接字(socket)
日志、交换空间与 root
- 日志:
/var/log/messages汇总多进程日志,是排查入侵的重要入口 - 交换空间(Swap):RAM 不足时将内存页换出到磁盘
- root 帐户:超级用户,拥有完全控制权,生产环境应禁止远程直接登录
开源与 GNU
开源允许免费分发源码,社区可修改、修复、再分发。GNU 项目推动自由软件运动:自由运行、学习修改、再分发、改进发布。