Linux 文件系统目录结构 🌳

Linux 文件系统

🐧 深入理解Linux目录树结构,掌握系统管理的核心知识

目录

🌍 概述

Linux 文件系统采用层次化的树状结构,以 /(根目录)为起点。这种结构设计遵循 FHS(文件系统层次结构标准),使得不同Linux发行版具有一致的目录布局。

🎯 设计理念:一切皆文件,层次分明,各司其职!

📊 主要特点

  • ✅ 树状层次结构
  • ✅ 区分系统文件和用户文件
  • ✅ 标准化目录用途
  • ✅ 灵活的挂载点系统
  • ✅ 权限控制精细

📁 核心目录详解

🗂️ / - 根目录

描述:整个文件系统的起点,包含所有其他目录和文件

重要内容

  • 系统启动必需的核心目录
  • 不应该直接存放用户文件

示例

1
ls /  # 查看根目录内容

⚠️ 注意:根目录应保持整洁,避免在此存放用户数据。

📦 /bin - 基本命令二进制文件

描述:存放系统最基本的命令,所有用户都可使用

包含内容

  • ls, cp, mv, rm, cat, mkdir 等核心命令
  • 系统启动和修复所需的工具

特点

  • ✅ 所有用户可执行
  • ✅ 系统启动必需
  • ✅ 单用户模式仍可用

现代变化:在一些新系统中,/bin/usr/bin 的符号链接。

🚀 /boot - 启动文件

描述:包含系统启动所需的文件

重要文件

  • vmlinuz - Linux内核文件
  • initrd.img - 初始内存磁盘镜像
  • grub/ - GRUB引导加载程序配置
  • config-* - 内核配置文件

⚠️ 注意:不要随意删除此目录文件,否则系统无法启动!

备份建议:定期备份 /boot 目录,特别是升级内核前。

💻 /dev - 设备文件

描述:体现Linux”一切皆文件”理念,包含所有设备文件

常见设备

  • /dev/sda - 第一块SATA硬盘
  • /dev/sdb - 第二块SATA硬盘
  • /dev/ttyUSB0 - 第一个USB串口设备
  • /dev/null - 空设备(黑洞)
  • /dev/random - 随机数生成器
  • /dev/zero - 零源设备

特殊设备文件

  • 块设备:随机访问(如硬盘)
  • 字符设备:顺序访问(如键盘)

管理命令

1
2
3
ls /dev        # 查看所有设备
fdisk -l # 查看磁盘设备
lsblk # 查看块设备信息

⚙️ /etc - 配置文件

描述:系统级配置文件中心

重要配置文件

  • /etc/passwd - 用户账户信息
  • /etc/group - 用户组信息
  • /etc/fstab - 文件系统挂载表
  • /etc/hosts - 主机名解析
  • /etc/network/ - 网络配置
  • /etc/ssh/sshd_config - SSH服务配置
  • /etc/crontab - 计划任务配置

操作示例

1
2
3
sudo nano /etc/hostname  # 修改主机名
sudo nano /etc/hosts # 修改主机解析
sudo systemctl restart networking # 应用网络更改

🏠 /home - 用户主目录

描述:普通用户的个人空间

结构示例

1
2
3
4
/home/
├── alice/ # 用户alice的家目录
├── bob/ # 用户bob的家目录
└── charlie/ # 用户charlie的家目录

用户目录内容

  • ~/Desktop/ - 桌面文件
  • ~/Documents/ - 文档
  • ~/Downloads/ - 下载文件
  • ~/.config/ - 用户配置(隐藏文件)
  • ~/.bashrc - Bash shell配置
  • ~/.ssh/ - SSH密钥和配置

权限管理

1
2
chmod 700 /home/username  # 设置用户目录权限
chown username:username /home/username # 设置所有权

📚 /lib - 系统库文件

描述:存放系统运行所需的共享库

包含内容

  • .so 文件(共享对象)
  • 内核模块
  • 系统命令依赖的库文件

相关命令

1
2
3
ldd /bin/ls     # 查看ls命令依赖的库
ldconfig # 重建库缓存
ls /lib/modules/$(uname -r)/kernel/ # 查看内核模块

现代变化:在一些新系统中,/lib/usr/lib 的符号链接。

📀 /media 和 /mnt - 挂载点

描述:用于挂载外部存储设备

区别

  • /media/ - 自动挂载(U盘、光盘等)
  • /mnt/ - 手动挂载(临时文件系统)

挂载示例

1
2
3
4
5
6
7
8
9
10
11
# 创建挂载点
sudo mkdir /mnt/usb

# 手动挂载U盘
sudo mount /dev/sdb1 /mnt/usb

# 查看挂载信息
df -h

# 卸载
sudo umount /mnt/usb

自动挂载:现代桌面环境会自动在 /media/username/ 下挂载设备。

📦 /opt - 可选软件

描述:第三方应用程序安装目录

典型结构

1
2
3
4
5
6
/opt/
├── google/
│ └── chrome/
├── oracle/
│ └── java/
└── sublime_text/

特点

  • ✅ 保持软件独立性和完整性
  • ✅ 便于管理和卸载
  • ✅ 避免与系统包管理器冲突

🔍 /proc - 进程信息

描述:虚拟文件系统,显示内核和进程信息

重要文件

  • /proc/cpuinfo - CPU信息
  • /proc/meminfo - 内存信息
  • /proc/[pid]/ - 特定进程信息
  • /proc/version - 内核版本
  • /proc/loadavg - 系统负载

查看示例

1
2
3
cat /proc/cpuinfo    # 查看CPU信息
cat /proc/meminfo # 查看内存信息
cat /proc/loadavg # 查看系统负载

进程信息

1
2
3
# 查看进程1234的信息
ls /proc/1234/
cat /proc/1234/status

👑 /root - root用户目录

描述:超级用户(root)的家目录

特点

  • ❗ 需要root权限访问
  • 💡 与 /home/root 不同
  • 🔒 系统管理的重要目录
  • 📁 存放系统管理脚本和配置

安全建议:避免在 /root 目录存放敏感信息,使用加密存储。

⚡ /sbin - 系统管理命令

描述:系统管理员使用的命令

重要命令

  • fdisk - 磁盘分区
  • ifconfig - 网络配置
  • reboot - 重启系统
  • shutdown - 关闭系统
  • iptables - 防火墙配置
  • fsck - 文件系统检查

特点:需要root权限执行

现代变化:在一些新系统中,/sbin/usr/sbin 的符号链接。

🗑️ /tmp - 临时文件

描述:存放临时文件,重启后清空

特点

  • ✅ 所有用户可写入
  • ⏰ 重启自动清理
  • 🔒 有些系统会定期清理
  • 🛡️ 使用tmpfs(内存文件系统)提高性能

安全考虑:设置适当的粘滞位权限:

1
chmod 1777 /tmp  # 设置粘滞位,用户只能删除自己的文件

📂 /usr - 用户程序

描述:最大的目录之一,包含用户应用程序

重要子目录

  • /usr/bin/ - 用户命令
  • /usr/lib/ - 程序库
  • /usr/local/ - 本地安装软件
  • /usr/share/ - 架构无关数据
  • /usr/src/ - 源代码
  • /usr/include/ - 头文件

/usr/local 的重要性

1
2
3
4
# 编译安装软件到/usr/local
./configure --prefix=/usr/local
make
sudo make install

📊 /var - 可变数据

描述:存放经常变化的文件

重要内容

  • /var/log/ - 系统日志
  • /var/www/ - Web服务器文件
  • /var/mail/ - 用户邮件
  • /var/spool/ - 队列文件
  • /var/cache/ - 应用程序缓存
  • /var/run/ - 运行时的变量数据

日志查看

1
2
tail -f /var/log/syslog    # 实时查看系统日志
journalctl -f # 查看systemd日志

日志管理:使用logrotate管理日志文件大小和历史。

🔧 实用技巧

📝 常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看当前目录
pwd

# 切换目录
cd /path/to/directory
cd ~ # 回家目录
cd - # 返回上一个目录
cd .. # 上一级目录

# 列出目录内容
ls -la # 详细列表(包含隐藏文件)
ls -lh # 人类可读格式
ls -ltr # 按时间反向排序
tree # 树状显示目录结构

📊 磁盘空间管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看磁盘使用情况
df -h

# 查看目录大小
du -sh /path/to/directory
du -h --max-depth=1 /path # 查看一级子目录大小

# 查找大文件
find / -type f -size +100M 2>/dev/null | xargs ls -lh

# 清理临时文件
sudo rm -rf /tmp/*
sudo apt autoremove # 删除不再需要的包
sudo apt clean # 清理软件包缓存

🔍 文件查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 按名称查找文件
find / -name "filename" 2>/dev/null
find / -iname "filename" # 不区分大小写

# 按类型查找
find / -type f -name "*.log" 2>/dev/null
find / -type d -name "config" 2>/dev/null

# 按时间查找
find / -mtime -7 # 7天内修改的文件
find / -atime +30 # 30天前访问的文件

# 使用locate(更快)
sudo updatedb # 更新数据库
locate filename

# 使用grep搜索内容
grep -r "search text" /path/to/search

⚠️ 注意事项

🔴 危险操作

  1. 不要随意删除系统文件

    1
    2
    3
    4
    # 危险!可能导致系统崩溃
    rm -rf /etc/
    rm -rf /boot/
    rm -rf /lib/
  2. 谨慎操作根目录

    1
    2
    # 避免在根目录创建大量文件
    # 不要将用户数据直接放在根目录
  3. 备份重要配置

    1
    2
    3
    # 备份重要配置文件
    cp /etc/fstab /etc/fstab.backup
    tar -czf etc-backup.tar.gz /etc/
  4. 小心使用通配符

    1
    2
    # 危险!可能删除错误文件
    rm -rf *.txt # 确保在当前正确目录

🛡️ 权限管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 正确设置文件权限
chmod 644 filename # 用户读写,其他读
chmod 755 directory # 用户读写执行,其他读执行
chmod 700 sensitive_file # 仅用户可访问

# 更改文件所有者
chown user:group filename
chown -R user:group directory # 递归更改

# 设置特殊权限
chmod +s filename # 设置SUID
chmod +t directory # 设置粘滞位

# 查看权限
ls -la
stat filename

📊 快速参考

🗺️ 目录结构速查表

目录 用途 重要内容
/ 根目录 文件系统起点
/bin 基本命令 ls, cp, rm
/boot 启动文件 内核, GRUB配置
/dev 设备文件 硬件设备接口
/etc 配置文件 系统配置
/home 用户目录 用户个人文件
/lib 库文件 共享库
/media 可移动媒体 自动挂载点
/mnt 临时挂载 手动挂载点
/opt 可选软件 第三方应用
/proc 进程信息 内核和进程信息
/root root目录 管理员家目录
/sbin 系统命令 系统管理工具
/tmp 临时文件 临时数据
/usr 用户程序 应用程序和数据
/var 可变数据 日志、缓存等

🔄 常用操作速查

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
# 查看系统信息
cat /etc/os-release # 系统版本
uname -a # 内核信息
hostnamectl # 主机信息
lscpu # CPU信息
free -h # 内存信息

# 管理服务
sudo systemctl status servicename
sudo systemctl start servicename
sudo systemctl stop servicename
sudo systemctl restart servicename
sudo systemctl enable servicename # 开机启动
sudo systemctl disable servicename # 禁用开机启动

# 包管理 (Debian/Ubuntu)
sudo apt update # 更新包列表
sudo apt upgrade # 升级所有包
sudo apt install package # 安装包
sudo apt remove package # 删除包

# 包管理 (RHEL/CentOS)
sudo yum update # 更新所有包
sudo yum install package # 安装包
sudo yum remove package # 删除包

🎯 学习建议

  1. 📚 循序渐进:先掌握常用目录,再学习高级功能
  2. 🛠️ 多实践:在虚拟机中练习,避免影响生产系统
  3. 🔍 好奇心:多探索系统目录,了解文件用途
  4. 📝 记笔记:记录重要目录的用途和注意事项
  5. 🆘 求助:遇到问题时使用 man 命令或在线文档
  6. 🔧 实验环境:使用Docker容器或虚拟机进行实验
  7. 📖 阅读文档:查阅FHS标准和发行版文档

推荐资源


💡 专业提示:理解Linux文件系统结构是成为系统管理员的第一步。花时间探索每个目录,了解其用途和重要性,这将为你的Linux之旅打下坚实基础。