Linux 基础体系
本篇覆盖 Linux 面试的基础考点:发行版区别、目录结构、文件系统(inode / block / 软硬链接)、权限体系、用户与用户组、进程与信号。这些是所有 Linux 面试的「地基」,概念必须张口就来。
1. 发行版区别
| 系列 | 代表发行版 | 包管理工具 |
|---|---|---|
| Red Hat 系 | RHEL、CentOS、Rocky Linux | yum、dnf |
| Debian 系 | Ubuntu、Debian | apt |
面试要点:
- RHEL 是红帽官方商业版,CentOS 曾是 RHEL 的免费复刻版,CentOS 停维护后社区转向 Rocky Linux(由 CentOS 创始人发起)。
- 企业生产环境主流使用 Rocky Linux 和 Ubuntu Server,答题时说出这一点即可体现对行业现状的了解。
- 同一套运维技能在这两个系列间迁移成本很低,主要差别就是包管理命令(
yum/apt)和部分配置文件路径。
2. 目录结构及常用目录作用
Linux 一切皆文件,整个系统是一棵以 / 为根的目录树。面试常考「以下目录分别放什么」:
| 目录 | 作用 | 面试记忆点 |
|---|---|---|
/ | 根目录 | 所有文件和目录的起点 |
/boot | 系统启动文件 | 内核、引导程序(grub)存放位置 |
/etc | 配置文件目录 | 系统所有服务的配置文件都在这,非常重要(nginx.conf、sshd_config 等) |
/home | 普通用户家目录 | 每个用户一个子目录,如 /home/tom |
/var | 动态数据目录 | 日志、数据库数据、缓存文件都在这里(/var/log、/var/lib/mysql) |
/usr | 软件安装目录 | 系统软件和用户安装的应用程序 |
/dev | 设备文件目录 | 硬盘、网卡等设备以文件形式呈现(如 /dev/sda) |
/proc | 伪文件系统 | 存放内核实时状态信息(如 /proc/cpuinfo),重启失效、不占磁盘 |
/tmp | 临时文件目录 | 系统会自动清理旧文件,不要放重要数据 |
记忆技巧: 配置找 /etc,日志找 /var/log,装软件找 /usr,看内核状态找 /proc。
3. 文件系统基础
3.1 inode 与 block
硬盘格式化后划分为两部分:
- inode(索引节点):记录文件的元信息——文件大小、权限、属主属组、时间戳、数据块指针等。注意:inode 不存放文件名,文件名存放在所在目录的 block 中(这就是「文件名只是目录里的一个条目」的本质)。
- block(数据块):实际存放文件内容的数据单元。
衍生考点: 磁盘还有空间却创建文件失败——可能是 inode 用尽(海量小文件场景),用 df -i 查看 inode 使用率。
3.2 软链接 vs 硬链接(高频)
| 对比项 | 软链接(符号链接) | 硬链接 |
|---|---|---|
| 本质 | 一个独立文件,存放指向源文件的路径 | 多个文件名指向同一个 inode |
| 类比 | Windows 快捷方式 | 同一个文件的不同名字 |
| 源文件删除后 | 链接失效(悬空链接) | 文件仍然存在(inode 引用计数减 1,减到 0 才真正释放) |
| 跨分区 | 可以跨分区 | 不能跨分区(inode 只在本分区内有意义) |
| 目录 | 可以对目录创建 | 不能对目录创建硬链接 |
ln -s /data/app.log app_soft_link # 软链接
ln /data/app.log app_hard_link # 硬链接
3.3 权限体系
Linux 文件权限分三组(属主 u、属组 g、其他人 o),每组三种权限:
| 权限 | 字符 | 数字值 | 对文件 | 对目录 |
|---|---|---|---|---|
| 读 | r | 4 | 查看内容 | 列出文件名 |
| 写 | w | 2 | 修改内容 | 增删文件 |
| 执行 | x | 1 | 执行程序 | 进入目录 |
- 数字权限示例:
rwxr-xr--=754。 - 特殊权限: SUID(执行时临时获得属主身份,如
passwd命令)、SGID(目录内新文件继承属组)、Sticky 位(目录内只有文件属主能删除自己的文件,如/tmp)。 chmod修改权限,chown修改属主属组:
chmod 755 run.sh # 数字方式
chmod u+x run.sh # 符号方式
chown tom:dev data.txt # 属主:属组
4. 用户和用户组
三个核心配置文件:
| 文件 | 存放内容 | 注意点 |
|---|---|---|
/etc/passwd | 用户基础信息(用户名、UID、家目录、默认 Shell) | 所有用户可读 |
/etc/shadow | 加密密码及密码策略 | 普通用户无读取权限 |
/etc/group | 用户组信息 | 组名、GID、组内成员 |
常用命令:
useradd tom # 新建用户
usermod -aG docker tom # 修改用户(把 tom 追加到 docker 组)
passwd tom # 设置/修改密码
sudo apt install nginx # 以管理员权限执行命令
sudo权限由/etc/sudoers控制,推荐用visudo编辑(保存时做语法检查,避免写错导致所有人无法提权)。
5. 进程基础
5.1 基本概念
- 进程:程序的一次运行实例,是资源分配的基本单位。
- 线程:进程内的执行单元,是 CPU 调度的基本单位,同进程内线程共享内存。
- 父子进程:子进程由父进程创建(fork),父进程通过 wait 回收子进程资源。
5.2 僵尸进程与孤儿进程(高频)
| 类型 | 产生原因 | 结局 |
|---|---|---|
| 僵尸进程 | 子进程已退出,但父进程没有回收子进程的退出状态资源 | 占用进程号资源;杀掉父进程后由 init 接管并回收 |
| 孤儿进程 | 父进程提前退出,子进程还在运行 | 由 init(1 号进程)接管,之后正常回收,无害 |
答题要点: 僵尸进程是「子死父没收尸」,孤儿进程是「父先死子被 init 收养」。孤儿进程无害,僵尸进程大量堆积会耗尽进程号。
5.3 后台运行:& 与 nohup
command &:放到后台运行,但仍挂在当前终端下——终端关闭 / 断开 SSH,进程会随终端收到挂断信号(SIGHUP)而退出。nohup command &:nohup让进程忽略挂断信号、脱离终端运行,输出默认写入nohup.out,配合&才是真正的「关掉终端也继续跑」。
5.4 常用信号
| 信号 | 触发方式 | 特点 |
|---|---|---|
| SIGINT | Ctrl+C | 终止前台进程,可被捕获 |
| SIGTERM | kill <pid> 默认发送 | 正常终止信号,进程可捕获并做清理,可被忽略 |
| SIGKILL | kill -9 <pid> | 强制杀死进程,无法被捕获、忽略或阻塞 |
答题要点: 优雅关闭优先 kill(SIGTERM)给进程清理资源的机会;进程卡死无响应时才用 kill -9,但可能造成数据未落盘。
本篇速记
- 生产主流发行版:Rocky Linux、Ubuntu Server;包管理
yum/dnfvsapt。 /etc配置、/var日志、/proc内核实时状态(重启失效)。- 软链接是路径(可跨分区、源删失效);硬链接是同一 inode(不可跨分区、不可对目录)。
- 僵尸进程 = 子死父未回收;孤儿进程 = 父先死、init 接管。
&只进后台,nohup才能脱离终端;kill -9不可捕获。