Linux 文件系统遵循 FHS(Filesystem Hierarchy Standard,文件系统层级标准),核心是将不同功能的文件分类存放到固定目录,保证跨发行版的一致性。以下是根目录 / 下所有核心目录的详细存放内容、作用及补充说明,按使用优先级和重要性排序:
/(根目录)/bin、/etc、/home 等),不直接存放业务文件/临时文件。/bin(Binary)ls、cp、mv、rm、cat、echo、bash、ps、grep 等最基础的系统命令。/bin 与 /usr/bin 逐渐合并,但仍保留 /bin 用于“启动关键命令”。/sbin(System Binary)sudo)可执行,用于系统启动、配置、维护。ifconfig(网络配置)、fdisk(磁盘分区)、mount(挂载)、reboot(重启)、init(系统初始化)、iptables(防火墙)、mkfs(格式化磁盘)等。/bin 区别——/bin 面向所有用户的通用命令,/sbin 面向 root 的系统管理命令。/lib(Library)/bin、/sbin 命令依赖的核心系统库文件,以及内核模块。.so 后缀):libc.so(C 标准库)、libpthread.so(线程库)、libdl.so(动态加载库);/lib/modules/3.10.0-1160.el7.x86_64/(对应内核版本的网卡/磁盘驱动等)。/lib64 目录,专门存放 64 位库文件;/lib 下的核心库丢失,/bin//sbin 下的命令会直接无法执行。/etc(Etcetera)核心作用:Linux 系统的全局配置中心,存放所有系统/服务的文本配置文件(可手动编辑)。
核心子目录/文件示例:
| 子目录/文件 | 作用 |
|---|---|
/etc/passwd |
所有用户的账户信息(用户名、UID、家目录) |
/etc/group |
用户组信息(组名、GID、组成员) |
/etc/shadow |
用户密码(加密存储,仅 root 可读) |
/etc/hosts |
本地 DNS 映射(优先级高于 DNS 服务器) |
/etc/fstab |
开机自动挂载的文件系统配置 |
/etc/sysconfig/ |
系统服务(network、firewalld)配置 |
/etc/ssh/sshd_config |
SSH 服务配置 |
/etc/crontab |
定时任务全局配置 |
/etc/resolv.conf |
DNS 服务器地址配置 |
补充说明:
/etc 下的配置后,需重启对应服务(如 systemctl restart sshd)才生效;/home/home/user1),是用户的“私人空间”。~/.bashrc、~/.ssh、~/.vimrc)、文档、下载文件、桌面数据等。echo $HOME 查看,~ 是家目录的简写(如 ~user1 等价于 /home/user1);/home 生成对应目录(可通过 /etc/adduser.conf 修改)。/root/home。/root/.bash_profile、/root/.ssh)、临时脚本、运维文件等。/root(即使 sudo 也需显式指定路径);/root 与 /home/root 混淆(后者默认不存在)。/usr(Unix System Resources)核心作用:存放系统的共享静态资源(程序、库、文档),是 Linux 中最大的目录之一,占磁盘空间最多。
核心子目录及作用:
| 子目录 | 存放内容 |
|---|---|
/usr/bin |
扩展普通用户命令(非启动必需):vim、gcc、python、git、nginx 等 |
/usr/sbin |
扩展系统管理命令:httpd、mysql、docker 等服务的管理命令 |
/usr/lib |
/usr/bin//usr/sbin 依赖的扩展库文件 |
/usr/lib64 |
64 位系统的扩展库文件(32 位系统无) |
/usr/include |
C/C++ 头文件(如 stdio.h、stdlib.h),用于程序编译 |
/usr/share |
共享数据(与架构无关):man(手册)、doc(文档)、locale(语言包) |
/usr/local |
手动安装的软件(源码编译/二进制包):如 /usr/local/bin、/usr/local/lib |
/usr/src |
内核源码/头文件:/usr/src/linux-headers-* |
补充说明:/usr 早期是“用户目录”,现定位为“系统资源目录”,文件多由包管理器(yum/apt)安装。
/opt(Optional)/opt/jdk1.8.0_301/(JDK)、/opt/tomcat/(Tomcat)、/opt/oracle/(Oracle 数据库)、/opt/redis/(手动安装的 Redis)。export PATH=/opt/tomcat/bin:$PATH)。/var(Variable)核心作用:存放动态变化的文件(日志、缓存、队列、服务数据),是系统运行中读写最频繁的目录。
核心子目录及作用:
| 子目录 | 存放内容 |
|---|---|
/var/log |
系统/服务日志:messages(系统总日志)、secure(安全日志)、nginx/(Nginx 日志) |
/var/cache |
程序缓存:yum/(yum 缓存)、apt/(apt 缓存)、browser/(浏览器缓存) |
/var/spool |
队列数据:mail(用户邮件)、cron(定时任务)、postfix(邮件队列) |
/var/lib |
服务持久化数据:mysql/(MySQL 数据文件)、docker/(Docker 数据)、rpm/(RPM 数据库) |
/var/run |
进程运行数据(软链接到 /run):PID 文件(sshd.pid)、套接字文件 |
/var/lock |
文件锁(防止多进程同时操作一个文件) |
/var/tmp |
临时文件(比 /tmp 生命周期长,默认保留 7 天) |
补充说明:/var 是磁盘占用增长最快的目录,需定期清理 /var/log(日志)和 /var/cache(缓存)。
/tmp(Temporary)/var/tmp:/tmp 重启清空,/var/tmp 保留更久。/run(替代 /var/run)tmpfs(内存文件系统),重启后清空。/run/sshd.pid(sshd 进程 ID)、/run/docker.sock(Docker 套接字)、/run/user/1000/(普通用户的运行时数据)。/var/run 软链接到 /run,统一管理运行时数据,内存存储比磁盘更高效。/dev(Device)核心作用:存放设备文件(Linux 中“一切皆文件”,硬件设备以文件形式映射)。
核心设备文件及作用:
| 设备文件 | 类型 | 作用 |
|---|---|---|
/dev/sda |
块设备 | 第一块 SATA/SCSI 磁盘(sda1 是第一个分区,sdb 是第二块磁盘) |
/dev/nvme0n1 |
块设备 | NVMe 固态硬盘(新一代磁盘) |
/dev/tty |
字符设备 | 终端设备(tty1-tty6 是本地控制台,ttyS0 是串口) |
/dev/null |
特殊设备 | 空设备(丢弃所有写入数据,“黑洞”) |
/dev/zero |
特殊设备 | 零设备(无限输出 0 字节,用于生成空文件) |
/dev/random |
特殊设备 | 随机数生成器(阻塞式,熵池不足时等待) |
补充说明:设备文件由 udev 动态管理,无需手动创建;访问设备文件等同于直接操作硬件(如 cat /dev/sda 可读取磁盘原始数据)。
/proc(Process)核心作用:虚拟文件系统(无实际磁盘存储,数据存于内存),存放当前运行的进程和内核实时信息。
核心文件/目录及作用:
| 路径 | 作用 |
|---|---|
/proc/[PID] |
对应 PID 的进程详情(如 /proc/1 是 systemd/init 进程,/proc/self 是当前进程) |
/proc/cpuinfo |
CPU 型号、核心数、架构等信息 |
/proc/meminfo |
内存总大小、已用/空闲内存、交换分区等 |
/proc/mounts |
当前挂载的所有文件系统 |
/proc/uptime |
系统运行时间(秒) |
/proc/sys/net/ |
内核网络参数(如 ip_forward 控制 IP 转发) |
补充说明:/proc 下文件大小均为 0(内存数据),常用命令(ps、top、free)均读取 /proc 数据。
/sys(System)/proc 更聚焦硬件)。/sys/devices:所有硬件设备的层级结构;/sys/class:按类型分类的设备(如 /sys/class/net/eth0 是网卡);/sys/block:块设备(磁盘/分区);/sys/fs:文件系统相关(sysfs、tmpfs)。udev)使用,普通用户极少直接操作。/mnt(Mount)mount /dev/sdb1 /mnt/usb(将 U 盘挂载到 /mnt/usb)、mount 192.168.1.100:/data /mnt/nfs(挂载 NFS 共享)。/mnt 下创建子目录(/mnt/cdrom、/mnt/nfs)分类挂载,卸载后目录为空。/media/media/cdrom(光驱)、/media/USB_DRIVE(U盘)。/mnt——/media 是自动挂载,/mnt 是手动挂载;Ubuntu 等发行版优先用 /media,CentOS 常用 /mnt。/srv(Service)/srv/www/(Web 网站根目录)、/srv/ftp/(FTP 共享文件)。/var/www(动态)而非 /srv/www(静态)。/lost+foundfsck 命令)时,存放恢复的损坏文件。/、/home、/var)都有独立的 /lost+found 目录;fsck 后才会生成恢复文件,默认为空;| 目录 | 核心区别 |
|---|---|
/bin vs /usr/bin |
/bin 是启动必需命令,/usr/bin 是扩展命令 |
/sbin vs /usr/sbin |
/sbin 是核心管理命令,/usr/sbin 是扩展管理命令 |
/tmp vs /var/tmp |
/tmp 重启清空,/var/tmp 保留 7 天左右 |
/home vs /root |
/home 普通用户家目录,/root root 家目录 |
/proc vs /sys |
/proc 聚焦进程/内核,/sys 聚焦硬件设备 |
/mnt vs /media |
/mnt 手动挂载,/media 自动挂载可移动介质 |
/var/www,CentOS 放 /usr/share/nginx/html),但核心目录结构一致;/bin、/sbin、/lib、/etc 等目录的文件删除会导致系统崩溃;/opt(第三方软件)或 /usr/local(手动编译软件),避免修改系统核心目录;/var/log(日志)、/var/cache(缓存)、/tmp,防止根目录占满;man hier 命令查看 Linux 官方的文件系统层级说明。