Linux 文件系统目录结构详解

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
相关推荐
王鑫的博客88611 分钟前
git常用修改命令
linux·git
爱莉希雅&&&30 分钟前
Linux中服务器时间同步
linux·运维·服务器
廖圣平30 分钟前
linux删除大文件日志后之后,df -h还占内存
linux·运维·服务器
飘若随风31 分钟前
Linux教程-常用命令系列二
linux
保证四个小时充足睡眠1 小时前
【并行分布计算】Hadoop伪分布搭建
linux
ZaaaaacK1 小时前
守护进程编程
linux·运维·网络
晓龙的Coding之路2 小时前
python生成项目依赖文件requirements.txt
linux·开发语言·python
gblfy2 小时前
DeepSeek + Dify + Ollama + Docker + Linux 私有化部署,构建你的专属私人 AI 助手
linux·docker·dify·本地部署·ollama·deepseek·私有化
ℳℓ白ℳℓ夜ℳℓ2 小时前
Linux网络UDP与TCP
linux·网络·udp
小oo呆3 小时前
【自然语言处理与大模型】Linux环境下Ollama下载太慢了该怎么处理?
linux·服务器·人工智能