← 返回 Linux命令图解 目录

🐧 Linux文件系统图解

FHS目录结构 + inode原理 + 权限模型 + 软硬链接 + 常用命令 · SVG可视化

① FHS目录结构

把Linux文件系统想象成一栋公司大楼:/ 是大楼入口,/bin 是工具间(谁都能用的工具),/etc 是管理处(配置文件),/home 是员工宿舍(每个人的私人空间),/var 是仓库(经常进出的货物),/tmp 是临时区(用完就扔),/usr 是公共设施(大家共享的软件)。
FHS目录结构 — 公司大楼 / 根目录 🏢 大楼入口 /bin 🔧 工具间 基础命令(ls/cp/mv) /etc 📋 管理处 配置文件 /home 🏠 员工宿舍 用户主目录 /var 📦 仓库 日志/缓存/数据 /tmp 🗑️ 临时区 重启可能清空 /usr 🏥 公共设施 应用软件/头文件 /dev 🖨️ 设备间 设备文件 /proc 📊 信息中心 进程/内核信息 /home 员工宿舍详解 /home/alice 🏠 Alice的宿舍 /home/bob 🏠 Bob的宿舍 /var 仓库详解 /var/log 日志 /var/cache 缓存 /var/lib 状态 /var/spool 队列 🔑 核心理解 Linux一切皆文件!设备是文件(/dev),进程是文件(/proc),配置是文件(/etc)
FHS = Filesystem Hierarchy Standard,Linux的"城市规划",每个目录都有约定用途

FHS核心目录速查

目录类比用途典型内容
/bin🔧 工具间基础命令ls, cp, mv, rm, cat, echo
/etc📋 管理处系统配置passwd, hosts, nginx.conf
/home🏠 员工宿舍用户主目录/home/alice, /home/bob
/var📦 仓库可变数据log/, cache/, lib/, spool/
/tmp🗑️ 临时区临时文件重启可能清空!
/usr🏥 公共设施用户级程序bin/, lib/, include/, share/
/dev🖨️ 设备间设备文件sda, tty, null, random
/proc📊 信息中心虚拟文件系统cpuinfo, meminfo, PID/
terminal — 查看目录结构
📁 /
bin/
etc/
home/
var/
tmp/
usr/
# 查看根目录结构 $ ls -l / total 72 lrwxrwxrwx 1 root root 7 Jan 15 10:00 bin → usr/bin drwxr-xr-x 2 root root 4096 Jan 15 10:00 boot drwxr-xr-x 5 root root 380 Jan 15 10:00 dev drwxr-xr-x 74 root root 4096 Jan 15 10:00 etc drwxr-xr-x 3 root root 4096 Jan 15 10:00 home lrwxrwxrwx 1 root root 7 Jan 15 10:00 lib → usr/lib drwxr-xr-x 2 root root 4096 Jan 15 10:00 media drwxr-xr-x 2 root root 4096 Jan 15 10:00 mnt drwxr-xr-x 2 root root 4096 Jan 15 10:00 opt dr-xr-xr-x 246 root root 0 Jan 15 10:00 proc # ← 虚拟文件系统! drwx------ 5 root root 4096 Jan 15 10:00 root drwxr-xr-x 26 root root 780 Jan 15 10:00 run lrwxrwxrwx 1 root root 8 Jan 15 10:00 sbin → usr/sbin drwxr-xr-x 2 root root 4096 Jan 15 10:00 srv drwxr-xr-x 2 root root 4096 Jan 15 10:00 sys drwxrwxrwt 10 root root 4096 Jan 15 10:00 tmp # ← 注意权限t! drwxr-xr-x 12 root root 4096 Jan 15 10:00 usr drwxr-xr-x 13 root root 4096 Jan 15 10:00 var
/bin 在现代Linux中已变成指向 /usr/bin 的符号链接。这是因为在systemd时代,/bin/usr/bin的区分已无必要(早期/是挂载在内存里的,/usr可能在别的磁盘)。所以 ls -l /bin 显示 bin → usr/bin

② inode原理

inode就像身份证——它记录了一个文件的所有"身份信息"(大小、权限、时间戳、数据块位置),但不包含文件名!文件名存在目录(户口本)里,目录通过文件名→inode号的映射来找到文件。就像身份证上没有你的家庭住址,户口本才有。
inode原理:身份证与户口本 📒 目录(户口本) 存的是:文件名 → inode号 的映射 "report.txt" → inode 12345 "photo.jpg" → inode 67890 "notes.md" → inode 11111 目录也是文件!也有自己的inode 🪪 inode 12345(身份证) 文件类型:普通文件 权限:rw-r--r-- 所有者UID:1000 所属组GID:1000 大小:4096 bytes ctime/mtime/atime 数据块指针:[5, 12, 28, ...] ⚠️ 不含文件名! 数据块 Block 5 Block 12 Block 28 Block 42 实际内容 读取 /home/alice/report.txt 的过程 ①查/的inode ②查/home的inode ③查alice的inode ④查report.txt 的inode→数据块
目录是"户口本"(文件名→inode号),inode是"身份证"(元数据→数据块),数据块存实际内容
terminal — 查看inode信息
📁 /home/alice/
report.txt
photo.jpg
# 查看文件的inode号 $ ls -i report.txt 12345 report.txt # 查看详细inode信息 $ stat report.txt File: report.txt Size: 4096 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 12345 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/ alice) Access: 2026-06-14 10:30:00.000000000 +0800 Modify: 2026-06-13 15:20:00.000000000 +0800 Change: 2026-06-13 15:20:00.000000000 +0800 Birth: 2026-06-10 09:00:00.000000000 +0800 # 查看磁盘inode使用情况 $ df -i / Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 6553600 128450 6425150 2% /
inode耗尽比磁盘空间耗尽更隐蔽!即使磁盘还有空间,如果inode用完了(比如大量0字节小文件),也无法创建新文件。用 df -i 检查inode使用率。

③ 权限模型

Linux权限就像门禁卡系统r=看(能读内容),w=改(能修改),x=进(能执行/进入目录)。每种权限分三组:自己(用户)、同组(组)、其他人。就像大楼门禁分"住户卡"、"物业卡"、"访客卡",权限依次递减。
权限模型:门禁卡系统 -rwxr-xr-- 解析 - r w x r - x r - - 拥有者 所属组 其他人 = 八进制 7 5 4 754 rwx → 八进制 对照表 rwx = 7 rw- = 6 r-x = 5 r-- = 4 -wx = 3 -w- = 2 4+2+1 4+2+0 4+0+1 4+0+0 0+2+1 0+2+0 📂 目录权限的特殊含义 r = 能ls列出目录内容 w = 能在目录中创建/删除文件 x = 能cd进入目录(最基本!) ⚠️ 常见权限值 755 目录标准权限 rwxr-xr-x 644 文件标准权限 rw-r--r-- 700 私有 rwx------
r=4(看), w=2(改), x=1(进),三组权限叠加就是八进制表示

chmod 与 chown 实战

# chmod — 修改权限 # 方式一:八进制 $ chmod 755 script.sh # rwxr-xr-x $ chmod 644 readme.md # rw-r--r-- # 方式二:符号 $ chmod u+x script.sh # 给拥有者加执行权限 $ chmod g-w config.yaml # 给组去掉写权限 $ chmod o=r public.txt # 其他人只读 $ chmod a+x deploy.sh # 所有人加执行权限 # 递归修改 $ chmod -R 755 /var/www/html/ # 整个目录 # chown — 修改所有者 $ chown alice:dev project/ # 改用户和组 $ chown -R www-data:www-data /var/www/ # 递归 $ chgrp docker /var/run/docker.sock # 只改组
软链接就像快捷方式——它指向另一个文件的路径,如果原文件删了,快捷方式就失效了(断链)。硬链接就像同一个文件的多个名字——它们共享同一个inode,删任何一个都不影响数据,因为inode的链接数还大于0。就像一个人可以有多个称呼(小名/大名/英文名),删掉一个称呼人还在。
软链接 vs 硬链接 软链接 = 快捷方式 link.txt inode: 54321 → 指向路径 original.txt inode: 12345 link.txt ⚠️ 断链! original.txt 已删除 • 有自己的inode • 存的是目标路径 • 原文件删了就断链 • 可跨文件系统 • 可链接目录 硬链接 = 同一文件多个名字 name1.txt inode: 12345 name2.txt inode: 12345 = name1.txt 已删除 name2.txt ✓ 仍然有效! • 共享同一个inode • 删一个不影响另一个 • 链接数计数(Links) • 不可跨文件系统 • 不可链接目录
软链接存路径(inode不同),硬链接共享inode(inode相同),删除效果完全不同
terminal — 软链接与硬链接实战
📁 demo/
original.txt
soft_link
hard_link
# 创建原始文件 $ echo "Hello Linux" > original.txt # 创建硬链接(共享inode) $ ln original.txt hard_link # 创建软链接(指向路径) $ ln -s original.txt soft_link # 查看inode号 — 硬链接相同! $ ls -li 12345 -rw-r--r-- 2 alice alice 12 Jun 14 10:00 hard_link 12345 -rw-r--r-- 2 alice alice 12 Jun 14 10:00 original.txt 67890 lrwxrwxrwx 1 alice alice 12 Jun 14 10:00 soft_link → original.txt # ^^ inode相同 ^^ 链接数=2 ^^ inode不同,指向路径 # 删除原文件后 $ rm original.txt $ cat hard_link # → 输出: Hello Linux (仍然有效!) $ cat soft_link # → cat: soft_link: No such file or directory (断链!)

⑤ 常用文件操作命令

常用文件操作命令速查 ls 列出目录内容 cd 切换目录 cp 复制文件 mv 移动/重命名 rm 删除文件 ⚠️ find 查找文件 ln 创建链接 tree 树形显示目录 🔑 高频用法 ls -la (详细信息) · cp -r (递归复制) · rm -rf (强制递归删除,慎用!) find / -name "*.log" -mtime +7 (找7天前的日志) · tree -L 2 (只显示2层)
7个核心文件操作命令,掌握它们就能在Linux文件系统中自由穿梭

find命令详解

# find [路径] [条件] [动作] # 按名字查找 $ find /home -name "*.txt" /home/alice/notes.txt /home/alice/report.txt # 按类型查找 $ find /var -type f # f=文件 d=目录 l=链接 $ find /var -type d -name "log" # 按时间查找 $ find /tmp -mtime +7 # 7天前修改的 $ find /tmp -atime -1 # 1天内访问的 # 按大小查找 $ find / -size +100M # 大于100MB的文件 $ find / -size 0 # 空文件 # 按权限查找 $ find / -perm 755 # 权限为755的 # 组合条件 $ find /var/log -name "*.log" -mtime +30 -size +10M # 找到后执行动作 $ find /tmp -name "*.tmp" -delete # 删除 $ find / -name "*.py" -exec wc -l {} \; # 统计行数

⑥ 面试速答

Linux中inode是什么?包含哪些信息?

inode是文件系统中的数据结构,存储文件的元数据,类比"身份证"。
包含:文件类型、权限(mode)、所有者UID/GID、文件大小、时间戳(atime/mtime/ctime)、数据块指针、链接计数。
不包含文件名!文件名存储在目录项(dentry)中,通过文件名→inode号的映射找到文件。

软链接和硬链接有什么区别?

软链接(符号链接):创建一个新文件,内容是目标文件的路径。有自己的inode。原文件删除后链接失效(断链)。可跨文件系统,可链接目录。
硬链接:创建一个目录项指向同一个inode,与原文件共享inode。原文件删除后仍有效(链接数减1)。不能跨文件系统,不能链接目录(避免循环)。
创建方式:ln src dst(硬链接),ln -s src dst(软链接)。

chmod 755是什么意思?644呢?

755 = 拥有者rwx(7) + 所属组r-x(5) + 其他人r-x(5)。目录的标准权限——拥有者全权,其他人和组可读可进入。
644 = 拥有者rw-(6) + 所属组r--(4) + 其他人r--(4)。普通文件的标准权限——拥有者可读写,其他人只读。
r=4, w=2, x=1,三组权限叠加即为八进制值。

为什么目录必须有x权限才能cd进去?

因为cd进入目录的本质是"读取目录的inode",而x权限控制的就是"能否访问inode"。没有x权限,即使有r权限(能ls看到文件名列表),也无法进入目录或读取文件内容。一个常见场景:r--x权限的目录——你能ls列出文件名,但文件详细信息(metadata)都显示问号。

/tmp目录的权限为什么是drwxrwxrwt?t是什么?

t粘滞位(sticky bit)。设置在目录上后,只有文件所有者(或root)才能删除该目录中的文件,即使其他人有w权限。
/tmp是所有用户共享的临时目录(777权限),没有sticky bit的话,任何用户都能删除别人的文件。加上t后,用户只能删自己的文件。
设置方式:chmod +t /tmpchmod 1777 /tmp

Linux文件系统的/proc和/sys是什么?

它们都是虚拟文件系统,不占用磁盘空间,内容由内核动态生成。
/proc:进程和内核信息。每个进程有/PID/目录,还有/proc/cpuinfo、/proc/meminfo等系统信息。
/sys:设备和驱动模型,提供比/proc更结构化的硬件信息。
典型用法:cat /proc/cpuinfo看CPU信息,cat /proc/meminfo看内存信息。

find命令的-mtime +7和-mtime -7有什么区别?

-mtime +7:修改时间在7天之前的文件(大于7天)。常用于清理旧日志。
-mtime -7:修改时间在7天之内的文件(小于7天)。常用于查找最近修改的文件。
-mtime 7:恰好在第7天修改的文件(不常用)。
同理还有-atime(访问时间)、-ctime(状态改变时间)。

rm -rf / 会发生什么?如何防范?

这会递归强制删除整个文件系统,是最危险的命令。现代Linux有防护:
1. rm --preserve-root(大多数发行版默认启用)会阻止删除/
2. 可以在.bashrc中加 alias rm='rm -i' 强制交互确认
3. 使用 trash-cli 替代rm,文件先进回收站
4. 重要操作前先用 ls 确认路径,养成好习惯

inode耗尽了怎么办?

inode耗尽(df -i显示IUse%=100%)即使磁盘还有空间也无法创建新文件。
排查步骤:
1. df -i 确认哪个分区inode满了
2. find / -xdev -type d -size +100k 找含大量文件的目录
3. find /path -type f -size 0 | wc -l 查看空文件数量
常见原因:大量小文件(如session文件、日志碎片)。清理后inode自动释放。
如果是业务需要,创建文件系统时用 mkfs.ext4 -N 指定更大的inode数。

下一篇:Linux进程管理图解 →
核心三原则速记

Linux三原则:① 先诊断后操作(top/df/free看资源)→ ② 权限最小化(不用root日常操作)→ ③ 日志配置自动轮转(logrotate)