linux-dir-struct
Linux 文件系统目录结构
补充说明
Linux 文件系统采用层次化的树状结构,以 /(根目录)为起点。这种结构设计遵循 FHS(Filesystem Hierarchy Standard),使得不同 Linux 发行版具有一致的目录布局。
主要特点:
- 树状层次结构
- 区分系统文件和用户文件
- 标准化目录用途
- 灵活的挂载点系统
- 权限控制精细
核心目录详解
/ — 根目录
整个文件系统的起点,包含所有其他目录和文件。
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 |
零源设备 |
设备类型:块设备(随机访问,如硬盘)和字符设备(顺序访问,如键盘)。
ls /dev # 查看所有设备
fdisk -l # 查看磁盘设备
lsblk # 查看块设备信息
/etc — 配置文件
系统级配置文件中心:
| 配置文件 | 说明 |
|---|---|
/etc/passwd |
用户账户信息 |
/etc/group |
用户组信息 |
/etc/fstab |
文件系统挂载表 |
/etc/hosts |
主机名解析 |
/etc/network/ |
网络配置 |
/etc/ssh/sshd_config |
SSH 服务配置 |
/etc/crontab |
计划任务配置 |
sudo hostnamectl set-hostname 新主机名 # 修改主机名
sudo nano /etc/hosts # 修改主机解析
/home — 用户主目录
普通用户的个人空间:
/home/
├── alice/ # 用户 alice 的家目录
├── bob/ # 用户 bob 的家目录
└── charlie/ # 用户 charlie 的家目录
常见子目录:~/Desktop/、~/Documents/、~/Downloads/、~/.config/、~/.bashrc、~/.ssh/。
chmod 700 /home/username
chown username:username /home/username
/lib — 系统库文件
存放系统运行所需的共享库(.so 文件)、内核模块和系统命令依赖的库。
ldd /bin/ls # 查看 ls 命令依赖的库
ldconfig # 重建库缓存
ls /lib/modules/$(uname -r)/kernel/ # 查看内核模块
现代变化:在一些新系统中,
/lib是/usr/lib的符号链接。
/media 和 /mnt — 挂载点
/media/— 自动挂载(U 盘、光盘等)/mnt/— 手动挂载(临时文件系统)
sudo mkdir /mnt/usb
sudo mount /dev/sdb1 /mnt/usb
df -h
sudo umount /mnt/usb
/opt — 可选软件
第三方应用程序安装目录:
/opt/
├── google/
│ └── chrome/
├── oracle/
│ └── java/
└── sublime_text/
特点:保持软件独立性和完整性、便于管理和卸载、避免与系统包管理器冲突。
/proc — 进程信息
虚拟文件系统,显示内核和进程信息:
| 文件 | 说明 |
|---|---|
/proc/cpuinfo |
CPU 信息 |
/proc/meminfo |
内存信息 |
/proc/[pid]/ |
特定进程信息 |
/proc/version |
内核版本 |
/proc/loadavg |
系统负载 |
cat /proc/cpuinfo # 查看 CPU 信息
cat /proc/meminfo # 查看内存信息
cat /proc/loadavg # 查看系统负载
ls /proc/1234/ # 查看进程 1234 的信息
cat /proc/1234/status
/root — root 用户目录
超级用户(root)的家目录。需要 root 权限访问,与 /home/root 不同。
避免在 /root 目录存放敏感信息,建议使用加密存储。
/sbin — 系统管理命令
系统管理员使用的命令:
| 命令 | 说明 |
|---|---|
fdisk |
磁盘分区 |
ip |
网络配置 |
reboot |
重启系统 |
shutdown |
关闭系统 |
iptables |
防火墙配置 |
fsck |
文件系统检查 |
需要 root 权限执行。
现代变化:在一些新系统中,
/sbin是/usr/sbin的符号链接。
/tmp — 临时文件
存放临时文件,重启后清空。所有用户可写入,有些系统会定期清理,部分系统使用 tmpfs(内存文件系统)提高性能。
chmod 1777 /tmp # 设置粘滞位,用户只能删除自己的文件
/usr — 用户程序
最大的目录之一,包含用户应用程序:
| 子目录 | 说明 |
|---|---|
/usr/bin/ |
用户命令 |
/usr/lib/ |
程序库 |
/usr/local/ |
本地安装软件 |
/usr/share/ |
架构无关数据 |
/usr/src/ |
源代码 |
/usr/include/ |
头文件 |
# 编译安装软件到 /usr/local
./configure --prefix=/usr/local
make
sudo make install
/var — 可变数据
存放经常变化的文件:
| 子目录 | 说明 |
|---|---|
/var/log/ |
系统日志 |
/var/www/ |
Web 服务器文件 |
/var/mail/ |
用户邮件 |
/var/spool/ |
队列文件 |
/var/cache/ |
应用程序缓存 |
tail -f /var/log/syslog # 实时查看系统日志
journalctl -f # 查看 systemd 日志
使用 logrotate 管理日志文件大小和历史。
实用技巧
常用命令
pwd # 查看当前目录
cd /path/to/directory # 切换目录
cd ~ # 回家目录
cd - # 返回上一个目录
cd .. # 上一级目录
ls -la # 详细列表(包含隐藏文件)
ls -lh # 人类可读格式
ls -ltr # 按时间反向排序
tree # 树状显示目录结构
磁盘空间管理
df -h # 查看磁盘使用情况
du -sh /path/to/directory # 查看目录大小
du -h --max-depth=1 /path # 查看一级子目录大小
find / -type f -size +100M 2>/dev/null | xargs ls -lh # 查找大文件
文件查找
find / -name "filename" 2>/dev/null # 按名称查找
find / -iname "filename" # 不区分大小写
find / -type f -name "*.log" 2>/dev/null # 按类型查找
find / -mtime -7 # 7天内修改的文件
sudo updatedb && locate filename # 快速查找(locate)
grep -r "search text" /path/to/search # 搜索文件内容
注意事项
危险操作
以下操作可能导致系统崩溃,严禁在不明情况下执行:
rm -rf /etc/ # 危险!删除所有配置
rm -rf /boot/ # 危险!删除启动文件
rm -rf /lib/ # 危险!删除系统库
最佳实践:
- 不在根目录直接创建大量文件
- 修改重要配置前先备份:
cp /etc/fstab /etc/fstab.backup - 使用通配符前确认当前目录正确
权限管理
chmod 644 filename # 用户读写,其他读
chmod 755 directory # 用户读写执行,其他读执行
chmod 700 sensitive_file # 仅用户可访问
chown user:group filename # 更改所有者
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 |
可变数据 | 日志、缓存等 |
常用操作速查
# 查看系统信息
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
学习建议
- 循序渐进:先掌握常用目录,再学习高级功能
- 多实践:在虚拟机中练习,避免影响生产系统
- 好奇心:多探索系统目录,了解文件用途
- 记笔记:记录重要目录的用途和注意事项
- 求助:遇到问题时使用
man命令或在线文档 - 实验环境:使用 Docker 容器或虚拟机进行实验
- 阅读文档:查阅 FHS 标准和发行版文档