Linux 文件系统目录结构详解
Linux 文件系统遵循 Filesystem Hierarchy Standard (FHS) 标准,定义了各个目录的用途和文件存放规则。无论是开发者、运维工程师还是普通用户,理解这些目录的作用都至关重要。本文将全面解析 Linux 的目录结构,并结合实际场景说明其应用。
根目录 /
作为所有目录和文件的起点,类似于 Windows 的 C:\
。所有其他目录均挂载在根目录下。
核心系统目录
1. /bin
(基本用户命令)
- 作用 :存放所有用户可用的基础命令(如
ls
,cp
,cat
)。 - 注意 :现代系统中,
/bin
通常是/usr/bin
的符号链接。
2. /boot
(启动文件)
- 内容 :内核文件(
vmlinuz-*
)、引导加载程序(如 GRUB)、初始化内存盘(initramfs
)。 - 重要性:系统启动依赖此目录,切勿随意删除!
3. /dev
(设备文件)
- 作用:以文件形式表示硬件或虚拟设备。
- 示例 :
/dev/sda
:第一块物理磁盘。/dev/null
:黑洞设备,丢弃所有写入数据。
4. /etc
(配置文件)
- 关键目录:存放系统和应用程序的配置。
- 常见文件 :
/etc/passwd
:用户账户信息。/etc/fstab
:文件系统挂载表。/etc/nginx/nginx.conf
:Nginx 服务配置。
5. /lib
与 /lib64
(共享库)
- 作用 :为
/bin
和/sbin
中的程序提供依赖库。 - 区别 :
/lib64
专用于 64 位系统(某些发行版直接合并到/lib
)。
6. /sbin
(系统管理命令)
- 用途 :存放管理员专用的命令(如
fdisk
,iptables
,reboot
)。
用户与数据目录
7. /home
(用户家目录)
- 规则 :每个用户拥有独立子目录(如
/home/alice
),存放个人文件和配置文件(如~/.bashrc
)。
8. /root
(超级用户的家目录)
- 权限 :仅
root
用户可访问,普通用户无权查看。
9. /opt
(第三方软件)
- 场景:存放独立于系统包管理器安装的第三方应用(如 MATLAB、大型商业软件)。
10. /usr
(用户程序资源)
- 最大目录:包含用户级应用程序和文件。
- 子目录 :
/usr/bin
:用户命令(如python
,gcc
)。/usr/local
:手动编译安装的软件(避免与系统包冲突)。/usr/share
:共享数据(文档、字体、图标)。
11. /var
(动态数据)
- 作用:存放频繁变化的文件。
- 子目录 :
/var/log
:系统日志(如syslog
,nginx/access.log
)。/var/cache
:应用程序缓存。/var/lib
:数据库文件(如 MySQL 数据)。
临时与运行时目录
12. /tmp
(临时文件)
- 特点 :系统重启后自动清理,某些系统使用内存(
tmpfs
)加速访问。
13. /run
(运行时数据)
- 内容:存放系统启动后的临时文件(如 PID 文件、套接字文件)。
- 注意 :现代系统中,
/var/run
通常符号链接到/run
。
特殊文件系统
14. /proc
(内核与进程信息)
- 虚拟文件系统:实时反映系统和进程状态。
- 示例 :
/proc/cpuinfo
:CPU 详细信息。/proc/[PID]
:特定进程的运行状态。
15. /sys
(内核设备与驱动)
- 用途:提供硬件和驱动的配置接口。
- 常见操作 :
- 查看网络接口:
/sys/class/net
。 - 管理电源:
/sys/power/state
。
- 查看网络接口:
挂载与存储目录
16. /media
(可移动设备挂载点)
- 自动挂载 :U 盘、光盘等插入后通常挂载在此(如
/media/usb
)。
17. /mnt
(手动挂载点)
- 场景:临时挂载网络存储(NFS)或实验性文件系统。
18. /srv
(服务数据)
- 规范 :存放服务相关的数据文件(如 Web 站点的
/srv/www
)。
进阶目录与场景
19. /etc/X11
(图形界面配置)
- 作用 :X Window 系统的配置文件(如
xorg.conf
)。
20. /usr/src
(源代码)
- 用途 :存放内核源码和开发头文件(如
linux-headers-*
)。
21. /var/spool
(任务队列)
- 示例 :
/var/spool/cron
:用户定时任务(crontab
)。/var/spool/mail
:用户邮件暂存。
发行版差异
不同 Linux 发行版的目录结构可能略有调整:
发行版 | 特点 |
---|---|
Debian/Ubuntu | Web 根目录:/var/www/html ;Snap 包目录:/snap |
Red Hat/CentOS | Web 根目录:/var/www ;内核模块:/lib/modules |
Arch Linux | 简化结构,部分目录合并到 /usr |
实用操作示例
1. 查找大文件
bash
du -sh /* # 查看根目录下各目录大小
du -h /var/log | sort -rh # 按大小排序日志文件
2. 挂载外部设备
bash
sudo mount /dev/sdb1 /mnt # 挂载磁盘分区到 /mnt
sudo umount /mnt # 卸载设备
3. 清理临时文件
bash
sudo rm -rf /tmp/* # 清理 /tmp(谨慎操作!)
4. 实时查看日志
bash
tail -f /var/log/syslog # 监控系统日志
journalctl -u nginx.service # 查看 Nginx 服务日志(systemd 系统)
安全与权限建议
关键目录权限
目录 | 推荐权限 | 说明 |
---|---|---|
/etc |
755 |
配置文件需防止普通用户篡改。 |
/var/log |
755 |
日志文件通常仅允许 root 写入。 |
/home |
750 |
用户家目录应限制他人访问。 |
危险操作规避
- 勿随意删除系统目录 :如
/bin
,/lib
,否则可能导致系统崩溃。 - 谨慎操作
/proc
和/sys
:直接修改可能影响内核行为。
目录合并趋势
现代 Linux 发行版(如 Fedora、Ubuntu)逐步简化结构:
- 符号链接合并 :
/bin
,/sbin
,/lib
链接到/usr
对应目录。 - 历史背景 :早期
/
和/usr
分离是为适应小容量存储,现因存储设备升级而合并。
总结
- 核心目录 :
/bin
,/etc
,/home
,/var
,/usr
。 - 运维重点 :
- 配置管理 :
/etc
和/usr/local/etc
。 - 日志排查 :
/var
- 配置管理 :