基于 Linux 文件系统层级标准 (FHS) 的完整目录说明
📋 快速概览 — 根目录下包含的主要目录
- /bin — 基础命令 (essential binaries)
- /boot — 启动引导文件
- /dev — 设备文件
- /etc — 系统配置文件
- /home — 用户主目录
- /lib — 核心共享库
- /media — 可移动媒体挂载点
- /mnt — 临时挂载点
- /opt — 可选附加软件
- /proc — 进程/内核虚拟文件系统
- /root — root 用户主目录
- /run — 运行时数据
- /sbin — 系统管理命令
- /srv — 服务数据
- /sys — 设备/驱动虚拟文件系统
- /tmp — 临时文件
- /usr — 用户程序 (二级层次)
- /var — 可变数据
- /snap — Snap 软件包
- /lost+found — 文件系统恢复
根目录结构 (/) 详细说明
Ubuntu 22.04 Server 根目录结构总览
/
├──
bin/
→ /usr/bin 的软链接
├──
boot/
→ 启动引导文件
├──
dev/
→ 设备文件
├──
etc/
→ 系统配置
├──
home/
→ 用户主目录
├──
lib/
→ /usr/lib 的软链接
├──
lib32/
→ 32位兼容库
├──
lib64/
→ /usr/lib64 的软链接
├──
libx32/
→ x32 ABI库
├──
media/
→ 可移动媒体挂载
├──
mnt/
→ 临时挂载点
├──
opt/
→ 第三方软件
├──
proc/
→ 进程信息(虚拟)
├──
root/
→ root主目录
├──
run/
→ 运行时数据
├──
sbin/
→ /usr/sbin 的软链接
├──
snap/
→ Snap包数据
├──
srv/
→ 服务数据
├──
sys/
→ 系统信息(虚拟)
├──
tmp/
→ 临时文件
├──
usr/
→ 用户程序
├──
var/
→ 可变数据
├──
lost+found/
→ 文件系统恢复
├──
cdrom/
→ CD-ROM挂载点
└──
swapfile
→ 交换文件(可选)
bin
/bin — 基础用户命令 Essential
→ /usr/bin (软链接)
在 Ubuntu 22.04 中,/bin 实际上是指向 /usr/bin 的软链接。这是 Ubuntu 自 2019 年起实施的 UsrMerge 策略的一部分,旨在统一根目录与 /usr 之间的冗余。
📌 包含的命令 (位于 /usr/bin)
核心命令详解
| 命令 | 功能说明 |
|---|---|
ls | 列出目录内容 |
cp | 复制文件/目录 |
mv | 移动/重命名文件 |
rm | 删除文件/目录 |
cat | 查看文件内容 |
echo | 输出文本到终端 |
grep | 文本搜索 |
find | 文件搜索 |
tar | 归档打包工具 |
chmod | 修改文件权限 |
chown | 修改文件所有者 |
ln | 创建链接 |
ps | 查看进程状态 |
kill | 终止进程 |
bash/sh | Shell 解释器 |
sed | 流文本编辑器 |
awk | 文本处理工具 |
gzip/gunzip | 文件压缩/解压 |
💡 提示:
UsrMerge 后,
/bin
、
/sbin
、
/lib
都已合并到
/usr
下,这是现代 Linux 发行版的趋势。
boot
/boot — 系统启动引导文件 Critical
包含系统启动所需的全部文件。GRUB 引导程序在系统加电后首先读取此目录,加载内核到内存中执行。
📌 核心文件
/boot 目录详细内容
| 文件/目录 | 说明 |
|---|---|
vmlinuz-5.15.0-xx-generic | 压缩的 Linux 内核镜像文件,"vmlinuz" = virtual memory Linux + z(压缩) |
initrd.img-5.15.0-xx-generic | 初始化内存盘 (Initial RAM Disk),内核加载前的临时根文件系统 |
config-5.15.0-xx-generic | 内核编译配置文件,记录内核模块选择 |
System.map-5.15.0-xx-generic | 内核符号表映射文件,用于调试 |
grub/ | GRUB 引导程序配置文件目录 |
efi/ | UEFI 启动文件 (EFI 系统分区挂载点) |
memtest86+.bin | 内存测试工具 |
grub/ 子目录
grub.cfg— GRUB 主配置文件(由 update-grub 自动生成)grubenv— GRUB 环境变量fonts/— 启动菜单字体文件locale/— 国际化语言文件x86_64-efi/— UEFI 平台的 GRUB 模块i386-pc/— Legacy BIOS 平台的 GRUB 模块
⚠️ 警告:
切勿手动修改
grub.cfg
,应编辑
/etc/default/grub
后运行
update-grub
重新生成。
dev
/dev — 设备文件 Virtual
Linux 哲学的核心理念 — "一切皆文件"。所有硬件设备都在此目录中以文件形式表示。/dev 由 udev 守护进程管理,是 tmpfs 内存文件系统。
📌 常见设备文件
块设备与字符设备
| 设备文件 | 类型 | 说明 |
|---|---|---|
/dev/sda | 块设备 | 第一块 SATA/SCSI 硬盘 |
/dev/sda1 | 块设备 | sda 上的第一个分区 |
/dev/nvme0n1 | 块设备 | 第一块 NVMe SSD |
/dev/nvme0n1p1 | 块设备 | NVMe 上的第一个分区 |
/dev/null | 字符设备 | 黑洞设备,丢弃所有写入数据 |
/dev/zero | 字符设备 | 持续输出零字节流 |
/dev/random | 字符设备 | 阻塞式随机数生成器 |
/dev/urandom | 字符设备 | 非阻塞式随机数生成器 |
/dev/tty | 字符设备 | 当前终端设备 |
/dev/tty0 | 字符设备 | 当前虚拟控制台 |
/dev/stdin | 软链接 | → /proc/self/fd/0 |
/dev/stdout | 软链接 | → /proc/self/fd/1 |
/dev/stderr | 软链接 | → /proc/self/fd/2 |
/dev/loop0 | 块设备 | 回环设备 (用于挂载镜像文件) |
子目录结构
disk/— 按 ID/UUID/路径组织的磁盘设备链接mapper/— LVM 逻辑卷和 dm-crypt 映射设备net/— 网络设备pts/— 伪终端从设备 (SSH 连接)shm/— 共享内存段fd/— 文件描述符input/— 输入设备usb/— USB 设备serial/— 串口设备
etc
/etc — 系统配置文件 Critical
"etc" 源自 "et cetera"(等等),现在专指系统级配置文件。所有系统服务、用户管理、网络配置、软件配置均存储在此。仅包含文本文件和脚本,不含可执行二进制文件。
📌 核心配置文件
系统基础配置
| 文件 | 说明 |
|---|---|
hostname | 系统主机名 |
hosts | 本地 DNS 解析映射 (IP → 主机名) |
passwd | 用户账户信息(用户名、UID、GID、Shell、主目录) |
shadow | 用户密码哈希(仅 root 可读) |
group | 用户组信息 |
fstab | 文件系统挂载表(开机自动挂载) |
resolv.conf | DNS 解析配置(systemd-resolved 管理) |
nsswitch.conf | 名称服务切换配置 |
environment | 全局环境变量 |
profile | 登录 Shell 全局初始化脚本 |
bash.bashrc | 非登录交互式 Shell 全局配置 |
sudoers | sudo 权限配置 |
sysctl.conf | 内核运行时参数 |
crontab | 系统级定时任务 |
timezone | 时区配置 (→ /usr/share/zoneinfo/) |
locale.conf | 系统语言/区域配置 |
lsb-release | 发行版信息 |
os-release | 操作系统标识信息 |
machine-id | 系统唯一标识符 |
网络配置 (/etc/netplan/)
Ubuntu 22.04 使用 Netplan 作为网络配置工具:
00-installer-config.yaml— 初始安装生成的网络配置50-cloud-init.yaml— cloud-init 生成的配置(云服务器常见)
配置示例格式:
network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true addresses: - 192.168.1.100/24 gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]
重要子目录
/etc/apt/— APT 包管理器配置sources.list— 软件源列表sources.list.d/— 额外软件源apt.conf.d/— APT 选项配置preferences.d/— 软件包优先级
/etc/ssh/— SSH 服务配置sshd_config— SSH 服务端配置ssh_config— SSH 客户端配置ssh_host_*_key— 主机密钥
/etc/systemd/— systemd 配置system/— 系统级服务单元user/— 用户级服务单元journald.conf— 日志配置logind.conf— 登录管理配置resolved.conf— DNS 解析配置
/etc/nginx/— Nginx 配置 (如已安装)/etc/mysql/— MySQL/MariaDB 配置/etc/cron.d/— 额外定时任务/etc/cron.daily/— 每日执行脚本/etc/cron.weekly/— 每周执行脚本/etc/cron.monthly/— 每月执行脚本/etc/pam.d/— 可插拔认证模块配置/etc/ssl/— SSL/TLS 证书certs/— CA 证书private/— 私钥 (仅 root 可读)
/etc/ufw/— 防火墙配置/etc/logrotate.d/— 日志轮转配置/etc/rsyslog.d/— 系统日志配置/etc/default/— 服务默认启动选项/etc/init.d/— SysVinit 兼容脚本/etc/security/— 安全策略配置/etc/skel/— 新用户主目录模板/etc/fail2ban/— 防暴力破解配置/etc/cloud/— cloud-init 配置
home
/home — 普通用户主目录 Essential
每个普通用户都在此拥有独立的主目录。例如用户 ubuntu 的主目录为 /home/ubuntu。每个用户对自己的主目录拥有完全控制权。
📌 用户主目录结构 (以 /home/ubuntu 为例)
常见隐藏配置文件 (dotfiles)
| 文件 | 说明 |
|---|---|
.bashrc | Bash 交互式非登录 Shell 配置(别名、函数等) |
.bash_profile | Bash 登录 Shell 配置 |
.profile | Shell 通用登录配置 |
.bash_history | 命令历史记录 |
.bash_logout | 退出登录时执行的脚本 |
.cache/ | 应用程序缓存数据 |
.config/ | 用户级应用配置(XDG 标准) |
.local/ | 用户级本地数据 |
.ssh/ | SSH 用户配置 |
.vimrc | Vim 编辑器配置 |
.wget-hsts | wget HSTS 记录 |
.sudo_as_admin_successful | sudo 提示信息标记 |
.ssh/ 子目录
authorized_keys— 允许登录的公钥列表id_rsa— RSA 私钥id_rsa.pub— RSA 公钥id_ed25519— Ed25519 私钥 (推荐)known_hosts— 已知主机公钥config— SSH 客户端配置别名
⚠️ 安全提示:
.ssh
目录权限应为 700,密钥文件应为 600,
authorized_keys
应为 644。
常见子目录
~/.cache/— 缓存数据(浏览器、包管理器等)~/.config/— 应用程序配置目录~/.local/bin/— 用户级可执行文件~/.local/share/— 用户级共享数据~/snap/— Snap 应用的用户级数据
lib
/lib — 核心共享库 Essential
→ /usr/lib (软链接)
在 UsrMerge 架构中,/lib 指向 /usr/lib。包含 /bin 和 /sbin 中程序运行所需的核心共享库和内核模块。
核心库文件
| 库文件 | 说明 |
|---|---|
ld-linux-x86-64.so.2 | 动态链接器/加载器 |
libc.so.6 | C 标准库(最核心) |
libm.so.6 | 数学函数库 |
libpthread.so.0 | POSIX 线程库 |
libdl.so.2 | 动态链接库 |
librt.so.1 | 实时扩展库 |
libnss_*.so | 名称服务切换模块 |
libpam*.so | PAM 认证模块 |
modules/ — 内核模块
/lib/modules/$(uname -r)/— 当前运行内核的模块目录kernel/— 内核模块(.ko 文件)modules.dep— 模块依赖关系modules.alias— 模块别名映射modules.symbols— 模块符号表
med
/media — 可移动媒体挂载点 Optional
系统自动挂载可移动设备(USB 闪存盘、CD/DVD、SD 卡等)时创建的挂载点目录。每个设备会自动创建一个以设备卷标或 UUID 命名的子目录。
目录示例
/media/username/USB_DRIVE— 以用户名和设备标签名组织/media/cdrom0— CD-ROM 设备挂载点
💡 注意:
在服务器版中,通常不使用自动挂载。建议通过
/etc/fstab
手动配置挂载。
mnt
/mnt — 临时挂载点 Optional
管理员手动临时挂载文件系统时使用的目录。与 /media 不同,这里完全由管理员手动管理。
使用示例
- 手动挂载 NFS:
mount -t nfs 192.168.1.100:/share /mnt/nfs - 挂载 ISO 镜像:
mount -o loop ubuntu.iso /mnt/iso - 挂载额外硬盘:
mount /dev/sdb1 /mnt/data
💡 最佳实践:
生产环境建议在 /mnt 下创建语义化子目录如
/mnt/backup
、
/mnt/nfs_share
等。
opt
/opt — 可选第三方软件 Optional
用于存放独立于包管理器安装的大型第三方/商业软件。这些软件通常自包含,拥有完整的目录结构(bin/、lib/、share/ 等)。
常见安装示例
/opt/google/— Google 软件 (Chrome、Google Cloud SDK)/opt/microsoft/— Microsoft 软件 (PowerShell、Teams)/opt/lampp/— XAMPP 集成环境/opt/sonarqube/— SonarQube 代码质量平台/opt/tomcat/— Apache Tomcat/opt/elasticsearch/— Elasticsearch/opt/gitlab/— GitLab Omnibus
💡 约定:
/opt 下的软件通常通过符号链接将可执行文件放到
/usr/local/bin
或添加到
$PATH
中。
prc
/proc — 进程信息虚拟文件系统 Virtual
procfs — 一个完全驻留在内存中的虚拟文件系统。它提供了系统运行时的进程和内核信息的接口,不占用磁盘空间。每个运行中的进程都有一个以 PID 命名的目录。
📌 重要文件
系统级信息文件
| 文件 | 说明 |
|---|---|
/proc/cpuinfo | CPU 详细信息(型号、频率、核心数、缓存) |
/proc/meminfo | 内存使用情况详情 |
/proc/loadavg | 系统负载平均值(1/5/15分钟) |
/proc/uptime | 系统运行时间(秒) |
/proc/version | 内核版本信息 |
/proc/filesystems | 内核支持的文件系统类型 |
/proc/mounts | 当前已挂载的文件系统 |
/proc/diskstats | 磁盘 I/O 统计 |
/proc/net/dev | 网络接口流量统计 |
/proc/swaps | 交换空间使用情况 |
/proc/partitions | 分区信息 |
/proc/interrupts | 中断信息 |
/proc/ioports | I/O 端口使用 |
/proc/dma | DMA 通道信息 |
/proc/cmdline | 内核启动参数 |
/proc/sys/ | 内核可调参数(sysctl 接口) |
进程目录 (/proc/[PID]/)
/proc/1/— systemd 进程(PID=1)/proc/[PID]/cmdline— 进程完整命令行参数/proc/[PID]/environ— 进程环境变量/proc/[PID]/fd/— 进程打开的文件描述符/proc/[PID]/cwd— 当前工作目录 (符号链接)/proc/[PID]/exe— 可执行文件路径 (符号链接)/proc/[PID]/status— 进程状态摘要/proc/[PID]/maps— 内存映射/proc/[PID]/stack— 内核调用栈/proc/[PID]/io— I/O 统计/proc/[PID]/cgroup— 所属 cgroup 信息/proc/[PID]/limits— 资源限制/proc/self/— 指向当前进程的特殊链接
⚠️ 注意:
修改
/proc/sys/
下的值可直接改变内核行为,但重启后失效。持久化修改应使用
/etc/sysctl.conf
。
rt
/root — root 用户主目录 Critical
超级用户 (root) 的主目录。位于根目录下而非 /home/root,是因为即使 /home 分区无法挂载,root 也能登录系统进行维护修复。
目录内容
.bashrc— root 的 Bash 配置.profile— root 登录环境配置.ssh/— root 的 SSH 配置.cache/— root 用户的缓存数据.local/— root 用户本地数据.viminfo— Vim 历史记录
⚠️ 安全建议:
日常运维应使用普通用户 + sudo,避免直接使用 root 登录,
/root
目录权限应为 700。
run
/run — 运行时数据 Virtual
存储自系统上次启动以来的运行时变量数据。基于 tmpfs(内存文件系统),重启后内容清空。替代了旧的 /var/run 和 /var/lock。
内容说明
/run/systemd/— systemd 运行时状态数据/run/utmp— 当前登录用户信息/run/sshd/— SSH 服务运行时数据/run/lock/— 锁文件(防止服务冲突)→/var/lock的链接/run/user/[UID]/— 每个用户独立的运行时目录/run/log/— 早期启动日志/run/mount/— 挂载相关运行时数据/run/network/— 网络服务运行时状态/run/dbus/— D-Bus 系统总线
💡 说明:
/var/run
和
/var/lock
现在都是指向
/run
的符号链接,实现向后兼容。
sbin
/sbin — 系统管理命令 Essential
→ /usr/sbin (软链接)
UsrMerge 后指向 /usr/sbin,包含系统管理员专用的命令,通常涉及系统管理、网络配置、文件系统操作等,需要 root 权限执行。
核心管理命令
| 命令 | 功能说明 |
|---|---|
fdisk | 磁盘分区表管理 |
mkfs.ext4 | 创建 ext4 文件系统 |
fsck | 文件系统检查修复 |
mount/umount | 挂载/卸载文件系统 |
ifconfig/ip | 网络接口配置 |
iptables/nftables | 防火墙规则管理 |
reboot/shutdown/poweroff | 系统电源管理 |
systemctl | systemd 服务管理 |
modprobe | 加载/卸载内核模块 |
lsmod | 列出已加载内核模块 |
useradd/userdel | 用户管理 |
passwd | 修改用户密码 |
ldconfig | 更新动态链接库缓存 |
sysctl | 运行时内核参数配置 |
lvm/lvcreate/lvremove | LVM 逻辑卷管理 |
snap
/snap — Snap 软件包数据 Optional
Ubuntu 特有的目录,用于存放 Snap 软件包。Snap 是 Canonical 开发的通用软件打包格式,自带依赖,独立于系统库。
子目录结构
/snap/[package]/[revision]/— 每个 Snap 包的解压内容/snap/bin/— Snap 应用可执行文件(已加入 PATH)/snap/core22/— 核心运行时环境/snap/lxd/— LXD 容器管理/snap/snapd/— Snap 守护进程
💡 管理命令:
snap list
查看已安装 Snap 包,
snap info [name]
查看详情。
srv
/srv — 系统服务数据 Optional
"service" 的缩写。存储由系统提供的服务相关数据。FHS 标准推荐将服务数据存放于此,而非 /usr 或其他系统目录。
常见用途
/srv/www/— Web 服务器站点数据 (替代 /var/www)/srv/ftp/— FTP 服务器共享文件/srv/nfs/— NFS 共享目录/srv/samba/— Samba 共享目录/srv/git/— Git 仓库数据/srv/rsync/— Rsync 同步数据
💡 实践建议:
很多实际项目中 Web 根目录常用
/var/www/html
,使用
/srv
更多是一种规范化的最佳实践。
sys
/sys — 系统/设备虚拟文件系统 Virtual
sysfs — 内核设备模型的结构化导出。与 /proc 类似,但更加结构化,专门提供设备、驱动、内核子系统的信息。
核心子目录
/sys/block/— 块设备信息/sys/bus/— 总线类型(PCI、USB 等)/sys/class/— 按设备类别组织(net、block、input 等)/sys/class/net/— 网络接口信息/sys/class/block/— 块设备链接/sys/class/thermal/— 温度传感器
/sys/devices/— 设备树形结构(物理设备)/sys/module/— 已加载内核模块信息/sys/firmware/— 固件信息(ACPI、EFI)/sys/fs/— 文件系统特定信息/sys/fs/cgroup/— cgroup 层级结构
/sys/kernel/— 内核通用信息/sys/kernel/mm/— 内存管理/sys/kernel/debug/— debugfs
/sys/power/— 电源管理接口/sys/hypervisor/— 虚拟化信息
tmp
/tmp — 临时文件 Essential
所有用户和程序都可以在此创建临时文件。默认挂载为 tmpfs(内存文件系统),系统重启后内容清除。Ubuntu 使用 systemd-tmpfiles 定期清理旧文件。
安全与管理
- 权限:
drwxrwxrwt(1777) — sticky bit 确保用户只能删除自己的文件 systemd-tmpfiles --clean负责定期清理- 配置:
/etc/tmpfiles.d/tmp.conf定义清理规则 - 对于需要更大空间或持久化的临时文件,使用
/var/tmp
⚠️ 注意:
不要在 /tmp 中存放重要数据!内容可能在重启、清理或 tmpfs 空间不足时被删除。
usr
/usr — 用户程序(二级层次) Essential
"User System Resources" — 这是系统最大的目录之一。存储非关键性(启动不需要)的用户程序、库、文档等。在 UsrMerge 中,根目录的 /bin、/sbin、/lib 都指向这里。
📌 子目录详解
/usr/bin — 用户命令
- 普通用户可执行的命令(非系统管理专用)
python3、gcc、git、wget、curl等/usr/bin/env— 环境变量解释器(脚本常用)- 通常有数千个可执行文件
/usr/sbin — 系统管理命令
- 系统管理员专用命令
useradd、fdisk、sshd、nginx等
/usr/lib — 共享库
/usr/lib/x86_64-linux-gnu/— 64位架构特定库/usr/lib/python3/— Python 标准库/usr/lib/gcc/— GCC 编译器支持库/usr/lib/systemd/— systemd 组件/usr/lib/apt/— APT 包管理器库/usr/lib/dpkg/— dpkg 底层包管理
/usr/share — 架构无关数据
/usr/share/doc/— 软件包文档/usr/share/man/— 手册页 (man pages)/usr/share/info/— GNU Info 文档/usr/share/locale/— 国际化翻译文件/usr/share/zoneinfo/— 时区数据/usr/share/applications/— 桌面应用文件/usr/share/fonts/— 系统字体/usr/share/icons/— 图标主题/usr/share/bash-completion/— Bash 自动补全
/usr/local — 本地安装软件
管理员手动编译安装的软件默认目录,不受包管理器管理:
/usr/local/bin/— 本地可执行文件/usr/local/sbin/— 本地管理命令/usr/local/lib/— 本地库文件/usr/local/etc/— 本地配置文件/usr/local/share/— 本地共享数据/usr/local/src/— 本地源代码/usr/local/include/— 本地头文件
💡 用途:
通过
make install
编译安装的软件默认会放到此目录,优先级高于 /usr。
/usr/include — 头文件
- C/C++ 头文件 (.h)
/usr/include/linux/— Linux 内核头文件/usr/include/python3.10/— Python 开发头文件- 编译 C/C++ 程序时需要的开发库
/usr/src — 内核源代码
/usr/src/linux-headers-$(uname -r)/— 当前内核头文件- DKMS 编译内核模块时需要的头文件
/usr/src/linux-source-5.15.0/— 完整内核源码(如已安装)
var
/var — 可变数据 Essential
"variable" — 存储运行过程中持续变化的数据。日志、缓存、邮件队列、数据库文件等都存放在此。这是服务器版中最重要的可写目录。
📌 关键子目录
/var/log — 系统日志
| 日志文件 | 说明 |
|---|---|
syslog | 系统全局日志 |
auth.log | 认证日志 (SSH 登录、sudo 等) |
kern.log | 内核日志 |
daemon.log | 守护进程日志 |
apt/ | APT 包管理日志 |
unattended-upgrades/ | 自动更新日志 |
fail2ban.log | Fail2ban 日志 |
ufw.log | UFW 防火墙日志 |
nginx/ | Nginx 访问/错误日志 |
mysql/ | MySQL 日志 |
boot.log | 启动过程日志 |
cloud-init.log | 云初始化日志 |
💡 日志管理:
journalctl
可查看 systemd 管理的日志,
logrotate
自动轮转旧日志。
/var/lib — 状态信息
/var/lib/dpkg/— dpkg 包数据库/var/lib/apt/— APT 缓存和状态/var/lib/mysql/— MySQL/MariaDB 数据文件/var/lib/postgresql/— PostgreSQL 数据/var/lib/docker/— Docker 容器数据/var/lib/lxd/— LXD 容器数据/var/lib/snapd/— Snap 状态数据/var/lib/systemd/— systemd 持久化数据/var/lib/cloud/— cloud-init 数据/var/lib/ufw/— 防火墙状态/var/lib/dhcp/— DHCP 租约
/var/cache — 缓存数据
/var/cache/apt/archives/— 下载的 .deb 包缓存/var/cache/apt/archives/partial/— 未完成的下载/var/cache/fontconfig/— 字体缓存/var/cache/nginx/— Nginx 缓存/var/cache/man/— man 手册缓存/var/cache/private/— 私有缓存
💡 清理缓存:
sudo apt clean
可清除 APT 包缓存释放磁盘空间。
/var/www — Web 服务器根目录
/var/www/html/— Apache/Nginx 默认站点根目录/var/www/html/index.html— 默认首页
/var/spool — 队列数据
/var/spool/cron/crontabs/— 用户级 cron 任务/var/spool/mail/— 邮件队列/var/spool/postfix/— Postfix 邮件队列/var/spool/cups/— 打印队列/var/spool/rsyslog/— 日志缓冲队列
其他子目录
/var/run→/run(符号链接)/var/lock→/run/lock(符号链接)/var/tmp/— 持久化临时文件(重启不清理)/var/mail/— 用户邮件箱/var/backups/— 系统备份(passwd、shadow 等)/var/opt/— /opt 软件的可变数据/var/crash/— 系统崩溃转储/var/snap/— Snap 应用可变数据
l+f
/lost+found — 文件系统恢复目录 Optional
每个 ext2/ext3/ext4 文件系统分区都有一个 lost+found 目录。当运行 fsck(文件系统检查)时,发现的孤立文件片段(损坏/未正确关闭的文件)会被放到这里,以 inode 编号命名。
使用说明
- 每个挂载分区根目录下都有一个独立的
lost+found - 权限为 700(仅 root 可访问)
- 文件以 inode 编号命名,如
#12345 - 通常为空,有内容说明系统经历过异常关机
- 预分配空间以加速 fsck 恢复操作
⚠️ 不要删除:
即使为空,也不应删除此目录。fsck 运行时需要它存在且有足够的空间。
cd
/cdrom — CD-ROM 挂载点 Optional
Ubuntu 安装时创建的 CD/DVD 驱动器默认挂载点。在服务器版中通常很少使用(服务器一般没有光驱)。
如需手动挂载光盘:
sudo mount /dev/sr0 /cdrom # 或 sudo mount /dev/cdrom /cdrom
swp
/swapfile — 交换文件 Optional
Ubuntu 22.04 默认使用交换文件而非交换分区。这是一个普通文件,被内核用作虚拟内存的扩展。
管理命令
- 查看状态:
swapon --show或free -h - 创建新交换文件: sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
- 持久化写入 /etc/fstab:
/swapfile none swap sw 0 0 - 调整大小需要先关闭 (
swapoff)、删除、重新创建
💡 建议大小:
物理内存的 1-2 倍。对于大内存服务器(>16GB),4-8GB 通常足够。
FHS 目录层级总览
📊
目录权限与类型速查表
| 目录 | 类型 | 典型权限 | 重启后 |
|---|---|---|---|
| /bin | 软链接 | lrwxrwxrwx | 持久 |
| /boot | 静态 | 755 | 持久 |
| /dev | devtmpfs | 755 | 动态重建 |
| /etc | 静态配置 | 755 | 持久 |
| /home | 用户数据 | 755 | 持久 |
| /lib | 软链接 | lrwxrwxrwx | 持久 |
| /opt | 静态软件 | 755 | 持久 |
| /proc | procfs(虚拟) | 555 | 每次重启重建 |
| /root | 用户数据 | 700 | 持久 |
| /run | tmpfs | 755 | 清空 |
| /sbin | 软链接 | lrwxrwxrwx | 持久 |
| /snap | Snap数据 | 755 | 持久 |
| /srv | 服务数据 | 755 | 持久 |
| /sys | sysfs(虚拟) | 555 | 每次重启重建 |
| /tmp | tmpfs | 1777 | 清空 |
| /usr | 静态 | 755 | 持久 |
| /var | 可变 | 755 | 持久(部分) |
🔑
关键概念总结
UsrMerge (根目录合并)
Ubuntu 22.04 默认启用 UsrMerge,将 /bin、/sbin、/lib 合并到 /usr 下,简化系统结构,减少冗余。
虚拟文件系统
/proc、/sys、/dev、/run 都不是真实磁盘存储,而是内核在内存中动态生成的接口,提供系统运行时信息。
FHS 标准 (Filesystem Hierarchy Standard)
Linux 发行版遵循的统一标准,定义了各目录的用途,确保不同发行版之间的一致性。最新版本为 FHS 3.0。
服务器版 vs 桌面版差异
- 服务器版无
/media自动挂载(通常无桌面环境) - 服务器版默认启用 UFW 防火墙和 fail2ban
- 服务器版使用 cloud-init 初始化
- 服务器版默认不安装 GUI 相关目录
- 服务器版更注重
/var/log、/var/lib的容量规划
45.64.74.193