文件系统与目录结构
Linux 目录结构概览
Linux 采用单根目录树结构,所有文件和目录都从根目录 / 开始组织。
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 26 27 28 29 30
| / (根目录) │ ├── /bin # 基本用户命令(二进制文件) ├── /boot # 启动加载器文件 ├── /dev # 设备文件 ├── /etc # 系统配置文件 ├── /home # 用户主目录 │ ├── /home/alice │ ├── /home/bob │ └── ... ├── /lib # 共享库文件 ├── /media # 可移动媒体挂载点 ├── /mnt # 临时挂载点 ├── /opt # 可选应用软件 ├── /proc # 进程信息虚拟文件系统 ├── /root # root 用户主目录 ├── /run # 运行时变量数据 ├── /sbin # 系统管理命令 ├── /srv # 服务数据 ├── /sys # 系统信息虚拟文件系统 ├── /tmp # 临时文件 ├── /usr # 用户程序和数据 │ ├── /usr/bin # 用户命令 │ ├── /usr/lib # 库文件 │ ├── /usr/local # 本地安装软件 │ └── /usr/share # 共享数据 └── /var # 可变数据文件 ├── /var/log # 日志文件 ├── /var/spool # 任务队列 └── /var/tmp # 持久临时文件
|
重要目录详解
/bin 和 /sbin
/bin - Essential user binaries
- 单用户模式下也需要的命令
- 例如:
ls, cp, mv, cat, mkdir
/sbin - System binaries
- 系统管理命令
- 例如:
fdisk, fsck, reboot, iptables
/etc
系统配置文件
重要配置文件:
/etc/passwd - 用户账户信息/etc/shadow - 用户密码(加密)/etc/group - 群组信息/etc/hosts - 主机名解析/etc/fstab - 文件系统表/etc/resolv.conf - DNS 配置/etc/crontab - 定时任务/etc/ssh/sshd_config - SSH 配置
/home 和 /root
/home - 普通用户主目录
1 2 3 4
| /home/ ├── alice/ ← 用户 alice 的家 ├── bob/ ← 用户 bob 的家 └── charlie/ ← 用户 charlie 的家
|
/root - root 用户主目录
/var
可变数据文件
/var/log - 系统日志
/var/log/syslog 或 /var/log/messages/var/log/auth.log 或 /var/log/secure/var/log/kern.log
/var/spool - 任务队列
/var/spool/cron - 定时任务/var/spool/mail - 用户邮件
/var/cache - 应用缓存
/var/lib - 应用状态数据
/var/lib/mysql - MySQL 数据/var/lib/dpkg - 包管理状态
文件系统类型
常见 Linux 文件系统
| 文件系统 |
特点 |
适用场景 |
| EXT4 |
稳定、成熟、 journaling |
通用,推荐大多数场景 |
| XFS |
高性能大文件、并行IO |
大数据、媒体存储 |
| Btrfs |
快照、压缩、校验和 |
高级功能需求 |
| ZFS |
企业级特性、数据完整性 |
企业存储、NAS |
| F2FS |
针对闪存优化 |
SSD、嵌入式设备 |
文件系统层次标准 (FHS)
Filesystem Hierarchy Standard (FHS)
FHS 定义了类 Unix 系统中目录结构和目录内容的标准,确保软件能在不同的 Linux 发行版间兼容。
查看当前系统 FHS 合规性:
1 2 3 4 5 6 7 8
| ls -la / | grep -E "bin|boot|dev|etc|home|lib|media|mnt|opt|proc|root|run|sbin|srv|sys|tmp|usr|var"
df -hT
cat /proc/mounts
|
实用命令速查
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 26 27 28 29 30 31
| pwd
cd /path/to/dir cd ../parent cd ~ cd -
ls ls -la ls -lh ls -lt ls -ltr
mkdir dirname mkdir -p path/to/nested/dir
rmdir dirname rm -r dirname rm -rf dirname
cp -r source dest
mv oldname newname mv source /path/to/dest
|
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 26 27 28 29 30 31 32 33 34 35
| touch filename > filename
cat filename cat -n filename less filename more filename head filename head -n 20 filename tail filename tail -n 20 filename tail -f filename
nano filename vim filename vi filename
grep "pattern" filename grep -i "pattern" filename grep -n "pattern" filename grep -r "pattern" /path/ grep -v "pattern" filename
diff file1 file2 cmp file1 file2
wc filename wc -l filename wc -w filename
|
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 26 27 28 29
| df -h df -hT df -i
du -sh /path du -h --max-depth=1 /path du -ah /path | sort -rh | head -20
fsck /dev/sda1 e2fsck /dev/sda1
mount /dev/sdb1 /mnt/usb mount -o loop iso.iso /mnt/iso umount /mnt/usb mount | grep /dev/sda
mkfs.ext4 /dev/sdb1 mkfs.xfs /dev/sdb1 mkswap /dev/sdb2
pvcreate /dev/sdb vgcreate vg0 /dev/sdb lvcreate -L 10G -n lv0 vg0
|
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 26 27 28 29 30
| find /path -name "*.txt" find /path -iname "*.txt" find /path -type f -name "*.log" find /path -type d -name "backup" find /path -size +100M find /path -size -1k find /path -mtime -7 find /path -user username find /path -perm 644 find /path -name "*.tmp" -delete find /path -name "*.log" -exec gzip {} \; find /path -name "*.txt" | xargs grep "pattern"
updatedb locate filename locate -i filename locate "*.conf" locate -n 10 "*.log"
which command which -a command whereis command whereis -b command
type command type -a command
|
延伸阅读