Linux系统中各个文件的作用
# Linux系统中各个文件的作用
Linux 系统遵循 文件系统层次结构标准(FHS, Filesystem Hierarchy Standard),每个目录都有明确的用途。以下是常见目录的作用及存储内容:
# 目录结构
以下是一个用树形结构展示的 Linux 文件系统目录及其作用的示例。每个目录的作用都简要标注在括号中:
/
├── bin/ (存放基本命令,如 ls, cp, mv)
├── boot/ (引导相关文件,包括内核和引导加载程序配置)
├── dev/ (设备文件,用于与硬件交互)
├── etc/ (全局配置文件,如网络、服务等设置)
├── home/ (普通用户的主目录,每个用户有一个子目录)
│ ├── user1/ (用户 user1 的个人数据和设置)
│ ├── user2/ (用户 user2 的个人数据和设置)
│ └── ...
├── lib/ (共享库,为 /bin 和 /sbin 提供支持)
├── media/ (挂载可移动媒体,如 USB 驱动器)
├── mnt/ (临时挂载点,用于手动挂载文件系统)
├── opt/ (第三方软件包安装位置,如商业应用)
├── proc/ (虚拟文件系统,提供进程和内核参数信息)
├── root/ (超级用户 root 的主目录)
├── run/ (运行时变量数据,如 PID 文件)
├── sbin/ (系统管理命令,如 fsck, reboot)
├── srv/ (服务相关的数据,如 Web 服务器内容)
├── sys/ (设备和驱动程序状态信息)
├── tmp/ (临时文件,重启后可能被清空)
├── usr/ (用户程序和文件的主要存储区)
│ ├── bin/ (用户级命令,如 gcc, python)
│ ├── lib/ (用户级库文件)
│ ├── local/ (本地安装的软件)
│ ├── share/ (架构无关的共享数据,如文档)
│ └── ...
└── var/ (可变数据文件,如日志、缓存、邮件)
├── log/ (日志文件,如系统日志、应用日志)
├── cache/ (缓存数据)
├── spool/ (排队任务数据,如打印队列)
└── tmp/ (持久化的临时文件)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 核心系统目录
目录 | 作用 | 典型内容 |
---|---|---|
/ | 根目录,所有目录和文件的起点。 | 不直接存储文件,只包含子目录。 |
/bin | 基本命令二进制文件,所有用户可用。 | ls , cp , bash 等系统启动和维护必需的命令。 |
/sbin | 系统管理命令二进制文件,仅供 root 用户使用。 | fdisk , iptables , reboot 等系统管理工具。 |
/boot | 启动文件,包含内核和引导程序。 | vmlinuz (内核文件)、initramfs (初始化内存文件系统)、grub (引导程序)。 |
/etc | 系统全局配置文件,影响所有用户。 | passwd (用户账户)、fstab (挂载配置)、nginx/ (服务配置目录)。 |
/dev | 设备文件,表示硬件或虚拟设备。 | sda (磁盘)、tty (终端)、null (空设备)。 |
/proc | 虚拟文件系统,实时反映内核和进程状态。 | cpuinfo (CPU信息)、meminfo (内存信息)、进程ID子目录(如 /proc/1 )。 |
/sys | 系统硬件和内核参数,用于与内核交互。 | 设备驱动、电源管理、内核模块参数等。 |
# 用户与程序相关目录
目录 | 作用 | 典型内容 |
---|---|---|
/home | 普通用户的家目录,每个用户拥有独立子目录。 | ~/.bashrc (用户配置)、~/Documents (用户文档)。 |
/root | root 用户的家目录,系统管理员专用。 | 系统级配置文件或管理员个人文件。 |
/usr | 用户程序与只读数据,系统安装的软件主要存放位置。 | bin/ (用户命令)、lib/ (共享库)、share/ (文档和资源)。 |
/usr/local | 本地编译安装的软件,优先级高于 /usr 。 | 手动安装的软件(如 nginx 、python3 )。 |
/opt | 第三方大型软件,通常每个软件独占子目录。 | /opt/google/chrome (Chrome浏览器)、/opt/jdk (JDK)。 |
/lib | 系统核心共享库,支持 /bin 和 /sbin 中的程序。 | libc.so (C语言库)、内核模块(/lib/modules )。 |
# 运行时与临时数据目录
目录 | 作用 | 典型内容 |
---|---|---|
/var | 可变数据,存储经常变化的文件。 | log/ (日志)、www/ (Web数据)、spool/ (队列文件)。 |
/tmp | 临时文件,重启后自动清除。 | 程序运行时产生的临时缓存或未保存的文件。 |
/run | 运行时数据,存储系统启动后的进程信息。 | pid 文件(进程ID)、lock 文件(锁文件)。 |
# 特殊用途目录
目录 | 作用 | 典型内容 |
---|---|---|
/mnt | 临时挂载点,用于手动挂载外部设备或文件系统。 | 临时挂载的U盘、NFS共享等。 |
/media | 自动挂载点,系统自动挂载可移动设备(如U盘、光盘)。 | /media/usb (U盘)、/media/cdrom (光盘)。 |
/srv | 服务数据,存储网站、FTP等服务的实际数据(非强制使用)。 | /srv/www (网站文件)、/srv/ftp (FTP文件)。 |
/lost+found | 文件系统修复恢复,存放 fsck 修复后的残留文件。 | 文件系统损坏后恢复的碎片文件(仅 ext3/ext4 文件系统存在)。 |
# 一些问题
# 安装软件应该在哪里
在 Linux 系统中,安装第三方软件(如 Nginx、Redis 和 MySQL)时,通常会遵循文件系统层次结构标准(FHS),并根据软件的性质选择合适的目录。以下是一些推荐的安装路径及其原因:
# 手动安装-目录
/usr/local
这是最常见的位置,用于存放本地编译或手动安装的软件。
- 特点:
- 专为管理员手动安装的软件设计。
- 不会被系统的包管理器(如
apt
,yum
)自动覆盖。 - 符合 FHS 规范。
- 适用场景:
- 手动编译安装的软件(如 Nginx、Redis、MySQL 的源码安装版本)。
- 第三方提供的二进制包。
示例:
/usr/local/nginx/ (Nginx 安装目录)
/usr/local/redis/ (Redis 安装目录)
/usr/local/mysql/ (MySQL 安装目录)
1
2
3
2
3
当然,你还可以把它们放进
/opt
1
# 包管理器默认路径
如果你使用系统的包管理器(如 apt
, yum
, dnf
)来安装这些软件,则它们会被安装到系统默认的路径中。
- 特点:
- 软件被分散到多个标准目录中(如
/usr/bin
,/etc
,/var/lib
)。 - 方便管理和升级,但可能缺乏灵活性。
- 软件被分散到多个标准目录中(如
- 实例
可执行文件: /usr/sbin/nginx
配置文件: /etc/nginx/
日志文件: /var/log/nginx/
1
2
3
2
3
# 自定义路径
如果需要更高的灵活性(例如为了隔离环境或便于迁移),可以选择自定义路径进行安装。
- 特点:
- 完全由管理员决定安装路径。
- 适合容器化环境(如 Docker)或特定的部署需求。
- 适用场景:
- 在生产环境中,为了方便管理或备份,将软件安装到特定的挂载点(如
/data
或/app
)。 - 使用容器技术时,可能会将软件安装到容器内的任意路径。
- 在生产环境中,为了方便管理或备份,将软件安装到特定的挂载点(如
- 示例
/data/nginx/ (Nginx 安装目录)
/data/redis/ (Redis 安装目录)
/data/mysql/ (MySQL 安装目录)
1
2
3
2
3
上次更新: 2025/04/07, 16:11:18