Linux 的文件系统遵循 Filesystem Hierarchy Standard (FHS) 标准,其目录结构是层次化的,每个目录都有明确的用途。以下是 Linux 中部分目录的作用解析:
1. 根目录 /
- 作用:根目录是整个文件系统的顶层目录,所有其他目录都直接或间接挂载在根目录下。
- 特点:
- 系统启动时,根目录是第一个被挂载的文件系统。
- 包含所有系统文件和子目录,是 Linux 文件系统的起点。
2. /bin
- 作用:存放系统启动和日常操作所需的核心命令(二进制可执行文件)。
- 常见命令:
ls
、cp
、mv
、cat
、bash
等。 - 特点:
- 所有用户均可访问。
- 即使系统进入单用户模式(Single User Mode),这些命令仍可用。
- 通常包含 32 位架构的命令(64 位系统中 64 位命令可能在
/bin
或/usr/bin
中)。
3. /boot
- 作用:存放系统启动所需的文件。
- 关键文件:
- 内核镜像(如
vmlinuz
)。 - 引导加载器配置文件(如 GRUB 的
grub.cfg
)。 - 初始化内存盘(
initrd.img
或initramfs
)。
- 内核镜像(如
- 特点:
- 系统启动时,BIOS/UEFI 会读取
/boot
中的文件加载操作系统。 - 通常建议将
/boot
放置在磁盘前 1024 柱面内(旧版系统限制)。
- 系统启动时,BIOS/UEFI 会读取
4. /dev
- 作用:存放设备文件(设备驱动接口)。
- 常见设备:
- 硬盘(如
/dev/sda
、/dev/sdb
)。 - 终端设备(如
/dev/tty
、/dev/console
)。 - 随机数生成器(如
/dev/random
、/dev/urandom
)。
- 硬盘(如
- 特点:
- 每个硬件设备在 Linux 中都映射为一个文件。
- 使用
mknod
或udev
工具动态创建设备文件。
5. /etc
- 作用:存放系统和应用程序的配置文件。
- 常见配置文件:
- 用户账户信息(
/etc/passwd
、/etc/shadow
)。 - 网络配置(
/etc/network/interfaces
、/etc/resolv.conf
)。 - 启动脚本(
/etc/rc.d
或/etc/init.d
)。
- 用户账户信息(
- 特点:
- 配置文件通常为文本格式,可手动编辑。
- 系统管理员的核心管理区域。
6. /home
- 作用:普通用户的个人主目录。
- 示例:
- 用户
alice
的主目录为/home/alice
。 - 存放用户的个人文件、配置文件(如
.bashrc
)。
- 用户
- 特点:
- 保护用户隐私,隔离不同用户的文件。
- 系统升级或重装时,用户数据通常保留在此目录中。
7. /lib
和 /lib64
- 作用:存放系统运行所需的共享库文件(动态链接库)。
- 区别:
/lib
:32 位架构的共享库。/lib64
:64 位架构的共享库。
- 关联目录:
/bin
和/sbin
中的程序依赖的库文件。- 例如:
/lib/libc.so.6
(C 标准库)。
8. /media
和 /mnt
- 作用:用于挂载外部存储设备。
- 区别:
/media
:自动挂载点(如插入 USB 驱动器后,系统自动挂载到/media/USB
)。/mnt
:手动挂载点(用户可手动挂载文件系统,如mount /dev/sdb1 /mnt/data
)。
- 特点:
/media
是现代系统推荐的挂载点。/mnt
通常为空,供临时使用。
9. /opt
- 作用:安装第三方软件(如商业软件或非标准软件包)。
- 示例:
- 软件可能安装在
/opt/software_name/
目录下。
- 软件可能安装在
- 特点:
- 通常用于独立安装的软件包(如 Oracle、IBM 软件)。
- 与系统默认软件分离,便于管理。
10. /proc
和 /sys
- 作用:虚拟文件系统,提供内核和硬件信息。
- 区别:
/proc
:以文件形式展示进程和系统状态(如/proc/cpuinfo
、/proc/meminfo
)。/sys
:以层次化结构展示设备和驱动信息(如/sys/class/
)。
- 特点:
- 文件内容由内核动态生成,不占用磁盘空间。
- 用于调试和监控系统资源。
11. /root
- 作用:超级用户(root)的主目录。
- 特点:
- 与
/home
类似,但仅属于 root 用户。 - 存放 root 的个人文件和配置。
- 与
12. /run
- 作用:存放系统运行时的临时数据(易失性数据)。
- 示例:
- 进程 ID 文件(如
/run/
目录下的.pid
文件)。 - 临时日志或服务状态信息。
- 进程 ID 文件(如
- 特点:
- 数据在系统重启后丢失。
- 替代了旧版的
/var/run
。
13. /sbin
- 作用:存放系统管理员使用的管理命令。
- 常见命令:
fdisk
、ifconfig
、init
、reboot
。 - 特点:
- 通常只有 root 用户可执行。
- 与
/bin
类似,但针对系统管理任务。
14. /srv
- 作用:存放系统服务的数据(如 Web 服务器、FTP 服务器的数据)。
- 示例:
- Web 站点文件可能存放在
/srv/www/
。 - FTP 数据存放在
/srv/ftp/
。
- Web 站点文件可能存放在
- 特点:
- 用于集中管理服务数据,与
/var
不同,/srv
是服务专属目录。
- 用于集中管理服务数据,与
15. /tmp
- 作用:存放临时文件。
- 特点:
- 所有用户均可读写。
- 系统重启后,
/tmp
中的内容通常会被清空。 - 安全性较低,需定期清理。
16. /usr
- 作用:系统级应用程序和库文件的存储目录。
- 子目录:
/usr/bin
:用户命令(如gcc
、vim
)。/usr/sbin
:系统管理命令(如useradd
、sshd
)。/usr/lib
:共享库文件。/usr/include
:C/C++ 头文件。/usr/share
:共享数据(如文档、字体、图标)。/usr/local
:本地安装的软件(如手动编译的软件)。
- 特点:
- 是 Linux 系统中最大的目录之一。
- 非核心功能的用户程序和库文件主要存放于此。
17. /var
- 作用:存放运行时变化的数据(如日志、缓存、邮件)。
- 子目录:
/var/log
:日志文件(如syslog
、auth.log
)。/var/cache
:应用程序缓存。/var/spool
:队列数据(如打印任务、邮件)。/var/tmp
:长期临时文件(与/tmp
不同,重启后保留)。
- 特点:
- 数据随时间增长而变化。
- 通常需要定期清理或归档。
18. /lost+found
- 作用:系统非正常关机或文件系统损坏时,恢复“丢失”的文件碎片。
- 特点:
- 平时为空。
- 文件系统检查工具(如
fsck
)会将修复的文件放在此目录中。
19. /opt
- 作用:安装第三方软件(如商业软件或非标准软件包)。
- 示例:
- 软件可能安装在
/opt/software_name/
目录下。
- 软件可能安装在
- 特点:
- 通常用于独立安装的软件包(如 Oracle、IBM 软件)。
- 与系统默认软件分离,便于管理。
20. /sys
- 作用:提供内核和硬件设备的动态信息。
- 特点:
- 文件内容由内核动态生成。
- 用于监控和调整硬件参数(如 CPU 频率、设备驱动状态)。
21. /usr/local
- 作用:本地安装的软件和库文件。
- 特点:
- 手动编译安装的软件通常安装在此目录下(如通过
./configure --prefix=/usr/local
)。 - 与系统默认的
/usr
分离,避免冲突。
- 手动编译安装的软件通常安装在此目录下(如通过
22. /usr/src
- 作用:存放内核源代码和其他软件的源代码。
- 示例:
- Linux 内核源代码通常位于
/usr/src/linux-headers-xxx
。
- Linux 内核源代码通常位于
- 特点:
- 开发人员编译内核模块或自定义内核时会用到此目录。
23. /var/log
- 作用:存放系统日志文件。
- 常见日志:
syslog
:通用系统日志。auth.log
:认证相关日志(如 SSH 登录尝试)。dmesg
:内核环缓冲区日志(系统启动信息)。
- 特点:
- 日志文件可能占用大量磁盘空间,需定期清理或轮转(如使用
logrotate
)。
- 日志文件可能占用大量磁盘空间,需定期清理或轮转(如使用
24. /var/cache
- 作用:缓存应用程序的数据(如包管理器的下载缓存)。
- 示例:
apt
的缓存位于/var/cache/apt/archives/
。
- 特点:
- 缓存可以加快程序运行速度,但占用磁盘空间。
25. /var/spool
- 作用:存放队列数据(如打印任务、邮件队列)。
- 示例:
- 打印任务可能存放在
/var/spool/cups/
。 - 邮件队列可能存放在
/var/spool/mail/
。
- 打印任务可能存放在
- 特点:
- 数据按顺序处理,通常由后台服务管理。
26. /var/tmp
- 作用:存放需要长期保留的临时文件。
- 特点:
- 与
/tmp
不同,/var/tmp
中的文件在系统重启后仍然保留。 - 通常用于需要跨会话保存的临时数据。
- 与
27. /usr/share
- 作用:存放共享数据(如文档、字体、图标、语言包)。
- 示例:
- 文档存放在
/usr/share/doc/
。 - 图标存放在
/usr/share/icons/
。
- 文档存放在
- 特点:
- 数据与架构无关,适用于多平台。
28. /usr/include
- 作用:存放 C/C++ 头文件(开发库的接口定义)。
- 示例:
- 标准库头文件如
stdio.h
。
- 标准库头文件如
- 特点:
- 开发人员编译程序时会引用此目录中的文件。
29. /usr/man
- 作用:存放手册页(man pages)。
- 示例:
man ls
会从/usr/man/man1/ls.1.gz
读取帮助文档。
- 特点:
- 手册页按级别分类(如
man1
为用户命令,man8
为系统管理命令)。
- 手册页按级别分类(如
30. /usr/src
- 作用:存放内核源代码和其他软件的源代码。
- 示例:
- Linux 内核源代码通常位于
/usr/src/linux-headers-xxx
。
- Linux 内核源代码通常位于
- 特点:
- 开发人员编译内核模块或自定义内核时会用到此目录。
Linux 文件系统目录结构表
层级 | 目录名 | 作用描述 |
---|---|---|
1 | / | 根目录,整个文件系统的起点,所有其他目录均挂载于此。 |
2 | /bin | 存放系统启动和日常操作所需的核心命令(如 ls , cp , bash ),所有用户均可访问。 |
2 | /boot | 存放系统启动所需的文件: - 内核镜像( vmlinuz )- GRUB 配置文件( grub.cfg )- 初始化内存盘( initrd.img ) |
2 | /dev | 设备文件目录,将硬件设备映射为文件: - 块设备(如 /dev/sda )- 字符设备(如 /dev/tty )- 虚拟设备(如 /dev/random ) |
2 | /etc | 系统配置文件目录,存放系统和应用程序的配置文件: - 用户账户信息( /etc/passwd , /etc/shadow )- 网络配置( /etc/network/interfaces )- 服务配置(如 /etc/nginx/nginx.conf )- 系统初始化脚本( /etc/init.d/ )- 环境变量( /etc/profile )- 安全策略( /etc/hosts.allow ) |
2 | /home | 普通用户的主目录,每个用户在该目录下有独立的子目录(如 /home/alice )。 |
2 | /lib | 存放系统运行所需的共享库文件(如 libc.so.6 ),支持 /bin 和 /sbin 中的程序。 |
2 | /lib64 | 64 位架构下的共享库文件目录,仅用于 64 位系统,与 /lib 类似但针对 64 位程序。 |
2 | /libx32 | 32 位兼容库目录(仅限 64 位系统),用于支持 32 位程序在 64 位系统中运行。 |
2 | /media | 自动挂载点,插入外部设备(如 USB)后,系统会自动挂载到此目录下的子目录(如 /media/USB )。 |
2 | /mnt | 手动挂载点,用户可手动挂载文件系统(如 mount /dev/sdb1 /mnt/data )。 |
2 | /opt | 第三方软件安装目录,通常用于安装非标准软件包(如商业软件)。每个软件通常安装在 /opt/software_name/ 。 |
2 | /proc | 虚拟文件系统,提供内核和进程信息(如 /proc/cpuinfo , /proc/meminfo )。内容由内核动态生成,无需占用磁盘空间。 |
2 | /root | 超级用户(root)的主目录,与 /home 类似,但仅属于 root 用户。 |
2 | /run | 运行时数据目录,存放系统运行时的临时数据(如 PID 文件、服务状态)。重启后数据丢失,替代旧版 /var/run 。 |
2 | /sbin | 系统管理命令目录,存放管理员使用的命令(如 reboot , fdisk ),通常仅限 root 用户执行。 |
2 | /srv | 服务数据目录,存放特定服务的数据(如 Web 服务器的网页文件 /srv/www/ 、FTP 服务的文件 /srv/ftp/ )。 |
2 | /sys | 虚拟文件系统,提供内核和硬件设备的动态信息(如 /sys/class/ ),用于监控和调整硬件参数。 |
2 | /tmp | 临时文件目录,所有用户均可读写,系统重启后内容通常被清空。默认权限为 1777 (防冲突)。 |
2 | /usr | 用户级程序目录,是 Linux 系统中最大的目录之一,包含应用程序、库文件和共享数据。 |
3 | /usr/bin | 存放用户命令(如 gcc , vim )。 |
3 | /usr/sbin | 存放系统管理命令(如 useradd , sshd )。 |
3 | /usr/lib | 存放共享库文件(如 libssl.so )。 |
3 | /usr/include | 存放 C/C++ 头文件(如 stdio.h )。 |
3 | /usr/share | 存放共享数据(如文档、字体、图标、语言包)。 |
3 | /usr/local | 存放本地安装的软件(如手动编译的软件),与系统默认的 /usr 分离。 |
3 | /usr/src | 存放内核源代码和其他软件的源代码(如 /usr/src/linux-headers-xxx )。 |
3 | /usr/games | 存放游戏程序(部分系统可能未启用)。 |
3 | /usr/libexec | 存放辅助程序(如 sudo 的底层工具)。 |
3 | /usr/lib64 | 64 位架构下的共享库文件目录(与 /lib64 类似,但位于 /usr 下)。 |
3 | /usr/libx32 | 32 位兼容库目录(仅限 64 位系统)。 |
3 | /usr/local/bin | 存放本地用户安装的命令(如手动编译的 nginx )。 |
3 | /usr/local/lib | 存放本地安装的共享库文件。 |
2 | /var | 运行时数据目录,存放随时间变化的数据(如日志、缓存、邮件队列)。 |
3 | /var/log | 存放系统日志文件(如 syslog , auth.log )。 |
3 | /var/cache | 存放应用程序缓存(如 apt 的下载缓存)。 |
3 | /var/spool | 存放队列数据(如打印任务 /var/spool/cups/ 、邮件队列 /var/spool/mail/ )。 |
3 | /var/tmp | 存放长期保留的临时文件,与 /tmp 不同,重启后仍保留。 |
3 | /var/lib | 存放应用程序的状态数据(如数据库文件、软件包管理器的状态)。 |
3 | /var/lock | 存放文件或资源的锁定文件(如 flock 创建的锁文件)。 |
3 | /var/run | 已弃用,旧版系统中用于存放运行时数据(现由 /run 替代)。 |
3 | /var/yp | NIS(网络信息服务)数据目录(较旧系统中使用)。 |
2 | /lost+found | 文件恢复目录,系统非正常关机或文件系统损坏时,恢复“丢失”的文件碎片。 |
2 | /selinux | SELinux 安全策略目录(仅在启用 SELinux 的系统中存在)。 |
2 | /security | 安全模块目录(如 AppArmor 配置文件)。 |
2 | /snap | Snap 包管理器安装目录(用于 Ubuntu 等支持 Snap 的发行版)。 |
2 | /systemd | systemd 系统和服务管理器相关文件(如服务单元文件 /systemd/system/ )。 |
2 | /tmp | 临时文件目录,所有用户均可读写,系统重启后内容通常被清空。 |