tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 各种MQ

  • Nginx

  • IdentityServer

  • Redis

  • Linux

    • Linux简介
    • Linux中一些常用命令
    • Linux中的文件复制与查找
    • 初识shell
    • shell-续与查看文件内容
    • 查看进程与shell
    • 查找数据与压缩
    • 再探shell
    • Linux系统中各个文件的作用
      • 目录结构
      • 核心系统目录
      • 用户与程序相关目录
      • 运行时与临时数据目录
      • 特殊用途目录
      • 一些问题
        • 安装软件应该在哪里
        • 手动安装-目录
        • 包管理器默认路径
        • 自定义路径
    • 【开发常用】Java开发必看
    • 【开发常用】软件安装利器
  • 中间件
  • Linux
EffectTang
2025-04-07
目录

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

# 核心系统目录

目录 作用 典型内容
/ 根目录,所有目录和文件的起点。 不直接存储文件,只包含子目录。
/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

当然,你还可以把它们放进

/opt
1

# 包管理器默认路径

如果你使用系统的包管理器(如 apt, yum, dnf)来安装这些软件,则它们会被安装到系统默认的路径中。

  • 特点:
    • 软件被分散到多个标准目录中(如 /usr/bin, /etc, /var/lib)。
    • 方便管理和升级,但可能缺乏灵活性。
  • 实例
可执行文件: /usr/sbin/nginx
配置文件: /etc/nginx/
日志文件: /var/log/nginx/
1
2
3

# 自定义路径

如果需要更高的灵活性(例如为了隔离环境或便于迁移),可以选择自定义路径进行安装。

  • 特点:
    • 完全由管理员决定安装路径。
    • 适合容器化环境(如 Docker)或特定的部署需求。
  • 适用场景:
    • 在生产环境中,为了方便管理或备份,将软件安装到特定的挂载点(如 /data 或 /app)。
    • 使用容器技术时,可能会将软件安装到容器内的任意路径。
  • 示例
/data/nginx/           (Nginx 安装目录)
/data/redis/           (Redis 安装目录)
/data/mysql/           (MySQL 安装目录)
1
2
3
上次更新: 2025/04/23, 16:23:16
再探shell
【开发常用】Java开发必看

← 再探shell 【开发常用】Java开发必看→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式