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/UbuntuWeb 根目录:/var/www/html;Snap 包目录:/snapRed Hat/CentOSWeb 根目录:/var/www;内核模块:/lib/modulesArch Linux简化结构,部分目录合并到 /usr
实用操作示例
1. 查找大文件
du -sh /* # 查看根目录下各目录大小
du -h /var/log | sort -rh # 按大小排序日志文件
2. 挂载外部设备
sudo mount /dev/sdb1 /mnt # 挂载磁盘分区到 /mnt
sudo umount /mnt # 卸载设备
3. 清理临时文件
sudo rm -rf /tmp/* # 清理 /tmp(谨慎操作!)
4. 实时查看日志
tail -f /var/log/syslog # 监控系统日志
journalctl -u nginx.service # 查看 Nginx 服务日志(systemd 系统)
安全与权限建议
关键目录权限
目录推荐权限说明/etc755配置文件需防止普通用户篡改。/var/log755日志文件通常仅允许 root 写入。/home750用户家目录应限制他人访问。
危险操作规避
勿随意删除系统目录:如 /bin, /lib,否则可能导致系统崩溃。谨慎操作 /proc 和 /sys:直接修改可能影响内核行为。
目录合并趋势
现代 Linux 发行版(如 Fedora、Ubuntu)逐步简化结构:
符号链接合并:/bin, /sbin, /lib 链接到 /usr 对应目录。历史背景:早期 / 和 /usr 分离是为适应小容量存储,现因存储设备升级而合并。
总结
核心目录:/bin, /etc, /home, /var, /usr。运维重点:
配置管理:/etc 和 /usr/local/etc。日志排查:/var