← 返回 Linux命令图解 目录
🐧 Linux文件系统图解
FHS目录结构 + inode原理 + 权限模型 + 软硬链接 + 常用命令 · SVG可视化
① FHS目录结构
把Linux文件系统想象成一栋公司大楼:/ 是大楼入口,/bin 是工具间(谁都能用的工具),/etc 是管理处(配置文件),/home 是员工宿舍(每个人的私人空间),/var 是仓库(经常进出的货物),/tmp 是临时区(用完就扔),/usr 是公共设施(大家共享的软件)。
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 — 查看目录结构
# 查看根目录结构
$ 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是"身份证"(元数据→数据块),数据块存实际内容
terminal — 查看inode信息
# 查看文件的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=进(能执行/进入目录)。每种权限分三组:自己(用户)、同组(组)、其他人。就像大楼门禁分"住户卡"、"物业卡"、"访客卡",权限依次递减。
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 # 只改组
④ 软链接vs硬链接
软链接就像快捷方式——它指向另一个文件的路径,如果原文件删了,快捷方式就失效了(断链)。硬链接就像同一个文件的多个名字——它们共享同一个inode,删任何一个都不影响数据,因为inode的链接数还大于0。就像一个人可以有多个称呼(小名/大名/英文名),删掉一个称呼人还在。
软链接存路径(inode不同),硬链接共享inode(inode相同),删除效果完全不同
terminal — 软链接与硬链接实战
# 创建原始文件
$ 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 (断链!)
⑤ 常用文件操作命令
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 /tmp 或 chmod 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三原则:① 先诊断后操作(top/df/free看资源)→ ② 权限最小化(不用root日常操作)→ ③ 日志配置自动轮转(logrotate)