🐧 Linux 目录结构完全指南

"一切皆文件" —— Linux 的设计哲学

📖 参考标准: FHS (Filesystem Hierarchy Standard) 3.0


📊 整体架构图

mindmap root((Linux 根目录 /)) 📦 /bin 核心系统命令 cat ls pwd mkdir 基础用户命令 🔧 /sbin 系统管理命令 fdisk ifconfig reboot init ⚙️ /etc 配置文件中心 系统与应用配置 👥 /home 普通用户家目录 用户个性化数据 👑 /root root用户家目录 管理员专属 📝 /var 可变数据 log cache spool 🖥️ /usr 用户程序 bin lib share 应用程序文件 📱 /opt 第三方软件 独立软件包 ⏳ /tmp 临时文件 重启清空 💾 /dev 设备文件 sda tty null 📊 /proc 进程信息 虚拟文件系统 🔌 /mnt & /media 挂载点 外接设备 ⚡ /sys 内核参数 设备信息 🔁 /run 运行时的进程ID文件 socket文件 🌐 /srv 服务数据 Web数据

🏗️ FHS 文件系统层级标准

Linux 目录结构遵循 FHS (Filesystem Hierarchy Standard) 标准,由 Linux Foundation 维护。

flowchart TB subgraph 层级结构 A["根目录 /"] --> B["/bin & /sbin"] A --> C["/etc"] A --> D["/lib & /lib64"] A --> E["/usr"] A --> F["/var"] A --> G["其他目录"] end B --> H["系统启动必需"] C --> I["系统配置"] E --> J["只读用户数据"] F --> K["可变数据"] %% 使用 classDef 定义样式类 classDef level1 fill:#9b59b6,color:#fff; classDef level2 fill:#3498db,color:#fff; classDef level3 fill:#2ecc71,color:#fff; classDef level4 fill:#f39c12,color:#fff; %% 将样式类应用到对应的节点上 class A level1 class B,C,D,E,F,G level2 class H,I,J,K level3

📋 FHS 核心原则

🏗️ 原则 📝 说明
层次结构 目录呈树形层级结构
清晰分离 /usr 只读,/var 可写
共享分离 /home 可跨网络共享
功能明确 每个目录有明确用途

🗂️ 核心目录详解

1️⃣ 系统命令目录 /bin /sbin

flowchart LR subgraph 用户命令 A1["/bin"] --> A2[cat] A1 --> A3[ls] A1 --> A4[pwd] A1 --> A5[chmod] end subgraph 系统管理命令 B1["/sbin"] --> B2[fdisk] B1 --> B3[ifconfig] B1 --> B4[reboot] B1 --> B5[mount] end subgraph 高级命令 C1["/usr/bin"] --> C2[docker] C1 --> C3[nginx] C1 --> C4[python] end subgraph 系统管理高级 D1["/usr/sbin"] --> D2[sshd] D1 --> D3[mysqld] D1 --> D4[dockerd] end %% 使用 classDef 定义样式类 classDef cmdLevel1 fill:#9b59b6,color:#fff; classDef cmdLevel2 fill:#3498db,color:#fff; classDef cmdLevel3 fill:#2ecc71,color:#fff; classDef cmdLevel4 fill:#f39c12,color:#fff; %% 将样式类应用到对应的节点上 class A1 cmdLevel2 class B1 cmdLevel2 class C1 cmdLevel2 class D1 cmdLevel2 class A2,A3,A4,A5 cmdLevel3 class B2,B3,B4,B5 cmdLevel3 class C2,C3,C4 cmdLevel3 class D2,D3,D4 cmdLevel3
🗂️ 目录 📖 全称 📝 用途 🔧 示例命令 🔐 权限
/bin Binaries 基础用户命令,所有用户可用 cat, ls, pwd, cp, mv, mkdir 所有用户
/sbin System Binaries 系统管理命令,需要 root fdisk, ifconfig, reboot, shutdown, mount root
/usr/bin User Binaries 应用程序命令 docker, nginx, python, git, vim 所有用户
/usr/sbin User System Binaries 应用系统管理命令 sshd, mysqld, dockerd, nginx root
/usr/local/bin Local Binaries 手动编译安装的软件 源码安装的 Python, 自定义脚本 所有用户

💡 记忆口诀: bin = 普通用户能用的,sbin = 超级用户用的(s = super)

🔑 区分技巧: 启动系统必需的最小命令集在 /bin(如 /bin/sh),系统恢复时也需要用到

📍 目录变迁 (Ubuntu vs CentOS)

flowchart TB subgraph Ubuntu/Debian U1["/bin"] -->|软链接| U2["/usr/bin"] U3["/sbin"] -->|软链接| U4["/usr/sbin"] end subgraph CentOS/RHEL 7+ C1["/bin"] -->|软链接| C2["/usr/bin"] C3["/sbin"] -->|软链接| C4["/usr/sbin"] end subgraph CentOS/RHEL 6 及之前 D1["/bin = 独立目录"] D2["/sbin = 独立目录"] D3["/usr/bin = 独立目录"] D4["/usr/sbin = 独立目录"] end %% 使用 classDef 定义样式类 classDef ubuntu fill:#e74c3c,color:#fff; classDef centos7 fill:#3498db,color:#fff; classDef centos6 fill:#95a5a6,color:#fff; %% 将样式类应用到对应的节点上 class U1,U2,U3,U4 ubuntu class C1,C2,C3,C4 centos7 class D1,D2,D3,D4 centos6

⚠️ 现代 Linux 系统(Ubuntu 16.04+, CentOS 7+),/bin/usr/bin 实际是同一目录


2️⃣ 配置中心 /etc

🎯 Linux 调试第一站: 遇到问题先查 /etc 配置是否正确

graph TB A["/etc/"] --> B[🔧 系统服务配置] A --> C[🌐 网络配置] A --> D[👥 用户与权限] A --> E[📦 软件源配置] A --> F[⏰ 定时任务] A --> G[🐳 容器配置] A --> H[🔒 安全设置] B --> B1[systemd/ 服务管理] B --> B2[nginx/ nginx配置] B --> B3[docker/ docker配置] B --> B4[ssh/ ssh客户端] B --> B5[ssh/sshd_config ssh服务] C --> C1[hosts 本地DNS] C --> C2[resolv.conf DNS服务器] C --> C3[network 网络设置] C --> C4[hostname 主机名] D --> D1[passwd 用户列表] D --> D2[group 用户组] D --> D3[shadow 加密密码] D --> D4[sudoers sudo权限] D --> D5[login.defs 登录配置] E --> E1[yum.repos.d/ YUM源] E --> E2[apt/sources.list APT源] E --> E3[docker.json Docker镜像源] F --> F1[crontab 系统定时任务] F --> F2[cron.d/ 定时任务.d] F --> F3[cron.daily/ 每日任务] F --> F4[cron.hourly/ 每小时任务] G --> G1[daemon.json Docker守护进程] G --> G2[docker-init/] G --> G3[docker-key.json] H --> H1[pam.d/ PAM认证] H --> H2[selinux/ SELinux配置] H --> H3[firewalld/ 防火墙] %% 使用 classDef 定义样式类 classDef etcLevel1 fill:#9b59b6,color:#fff; classDef etcLevel2 fill:#3498db,color:#fff; classDef etcLevel3 fill:#2ecc71,color:#fff; classDef etcLevel4 fill:#f39c12,color:#fff; %% 将样式类应用到对应的节点上 class A etcLevel1 class B,C,D,E,F,G,H etcLevel2 class B1,B2,B3,B4,B5,C1,C2,C3,C4,D1,D2,D3,D4,D5,E1,E2,E3,F1,F2,F3,F4,G1,G2,G3,H1,H2,H3 etcLevel3

核心配置文件详解

📄 配置文件 📝 作用 ⚙️ 常用参数
/etc/docker/daemon.json Docker 守护进程配置 registry-mirrors, insecure-registries, storage-driver
/etc/ssh/sshd_config SSH 服务端配置 Port, PermitRootLogin, PasswordAuthentication
/etc/nginx/nginx.conf Nginx 主配置 worker_processes, include, error_log
/etc/hosts 本地 DNS 映射 127.0.0.1 localhost
/etc/fstab 开机自动挂载表 设备 UUID 挂载点 文件系统 挂载选项
/etc/crontab 系统定时任务 分 时 日 月 周 命令
/etc/profile 全局环境变量 PATH, JAVA_HOME
/etc/hostname 主机名 主机名
/etc/resolv.conf DNS 服务器 nameserver 8.8.8.8
/etc/passwd 用户账户信息 用户名:密码:UID:GID:说明:家目录:shell
/etc/shadow 加密的用户密码 用户名:加密密码:最后修改时间:...
/etc/group 用户组信息 组名:密码:GID:成员列表

实用配置示例

# 🐳 Docker 镜像加速配置
sudo vi /etc/docker/daemon.json
# {
#   "registry-mirrors": [
#     "https://docker.mirrors.ustc.edu.cn",
#     "https://hub-mirror.c.163.com"
#   ]
# }

# 🔐 SSH 禁止 root 登录
sudo vi /etc/ssh/sshd_config
# PermitRootLogin no
# PasswordAuthentication no

# 🌐 修改主机名
sudo hostnamectl set-hostname my-server

# ⏰ 查看定时任务
crontab -l
sudo cat /etc/crontab

3️⃣ 数据与日志 /var

🔥 故障排查第一现场: 系统或应用出问题?先看 /var/log

pie showData title /var 目录空间占用分布(典型服务器) "log/ 日志文件" : 40 "lib/ 应用数据" : 30 "cache/ 缓存" : 15 "spool/ 队列" : 10 "tmp/ 临时" : 5

/var 子系统详解

flowchart TB A["/var/"] --> B[📋 log/] A --> C[📚 lib/] A --> D[⚡ cache/] A --> E[📮 spool/] A --> F[⏳ tmp/] A --> G[🔄 run/] B --> B1[syslog 系统日志] B --> B2[nginx/ Nginx日志] B --> B3[docker/ Docker日志] B --> B4[auth.log 认证日志] B --> B5[boot.log 启动日志] B --> B6[kern.log 内核日志] C --> C1[mysql/ MySQL数据] C --> C2[postgresql/ PG数据] C --> C3[docker/ Docker存储] C --> C4[redis/ Redis持久化] D --> D1[apt/ APT缓存] D --> D2[yum/ YUM缓存] D --> D3[cache/ 应用缓存] E --> E1[mail/ 邮件队列] E --> E2[cron/ 定时任务] E --> E3[lpd/ 打印队列] F --> F1[重启保留] F --> F2[系统崩溃转储] G --> G1[*.pid 进程ID] G --> G2[*.sock socket文件] %% 使用 classDef 定义样式类 classDef varLevel1 fill:#9b59b6,color:#fff; classDef varLevel2 fill:#3498db,color:#fff; classDef varLevel3 fill:#2ecc71,color:#fff; classDef varLevel4 fill:#f39c12,color:#fff; %% 将样式类应用到对应的节点上 class A varLevel1 class B,C,D,E,F,G varLevel2 class B1,B2,B3,B4,B5,B6,C1,C2,C3,C4,D1,D2,D3,E1,E2,E3,F1,F2,G1,G2 varLevel3
📁 子目录 📝 用途 🧹 清理建议 📋 典型内容
/var/log/ 系统和应用日志 ✅ 可定期清理历史日志 syslog, auth.log, nginx/
/var/lib/ 应用持久化数据 谨慎操作 mysql/, docker/, redis/
/var/cache/ 缓存数据 ✅ 可清理 apt/, yum/, pip/
/var/spool/ 任务队列 ⚠️ 检查后再清 mail/, cron/, lpd/
/var/tmp/ 重启不清的临时文件 ✅ 可清理 临时数据
/var/run/ 运行时进程信息 ❌ 由系统管理 *.pid, *.sock

日志文件详解

# 📊 常用日志文件位置
/var/log/messages      # 通用系统日志 (CentOS/RHEL)
/var/log/syslog        # 通用系统日志 (Ubuntu/Debian)
/var/log/auth.log      # 认证日志 (Ubuntu/Debian)
/var/log/secure        # 认证日志 (CentOS/RHEL)
/var/log/nginx/
    ├── access.log     # Nginx 访问日志
    └── error.log      # Nginx 错误日志
/var/log/httpd/ 或 /var/log/apache2/
    ├── access_log     # Apache 访问日志
    └── error_log      # Apache 错误日志
/var/log/docker/       # Docker 日志
/var/log/boot.log      # 启动日志

# 🔍 常用日志查看命令
tail -f /var/log/syslog           # 实时查看系统日志
journalctl -u nginx.service        # 查看 nginx 服务日志
journalctl -f                      # 实时查看所有日志
dmesg                              # 查看内核启动信息
cat /var/log/messages | grep error # 查找错误信息

⚠️ 重要日志文件说明:

  • wtmp / utmp - 登录记录(使用 who, last 命令查看)
  • btmp - 失败的登录尝试(使用 lastb 查看)
  • lastlog - 各用户最后登录时间

4️⃣ 用户空间 /home/root

flowchart TD A[文件系统] --> B["/home/ 普通用户"] A --> C["/root/ root用户"] B --> B1[alice/] B --> B2[bob/] B --> B3[charlie/] B1 --> B1a[📄 Documents/] B1 --> B1b[📥 Downloads/] B1 --> B1c[🎵 Music/] B1 --> B1d[🖼️ Pictures/] B1 --> B1e[⚙️ .config/ 应用配置] B1 --> B1f[🔑 .ssh/ SSH密钥] B1 --> B1g[📝 .bashrc Bash配置] B2 --> B2a[📄 Documents/] B2 --> B2b[📥 Downloads/] B2 --> B2c[⚙️ .config/] C --> C1[专属root配置] C --> C2[与/home分离更安全] C --> C3[.bashrc] C --> C4[.ssh/] %% 使用 classDef 定义样式类 classDef homeLevel1 fill:#9b59b6,color:#fff; classDef homeLevel2 fill:#3498db,color:#fff; classDef homeLevel3 fill:#2ecc71,color:#fff; classDef homeLevel4 fill:#f39c12,color:#fff; %% 将样式类应用到对应的节点上 class A homeLevel1 class B,C homeLevel2 class B1,B2,B3,C1,C2,C3,C4 homeLevel3 class B1a,B1b,B1c,B1d,B1e,B1f,B1g,B2a,B2b,B2c homeLevel4
📂 路径 📝 说明 🔐 权限
/home/username/ 普通用户家目录 700 (用户名:用户名)
~ 当前用户家目录的简写 -
~/.bashrc 用户级 Bash 配置(别名、函数) 生效方法: source ~/.bashrc
~/.profile~/.bash_profile 用户登录时执行的配置 系统级优先于用户级
~/.ssh/ SSH 密钥和配置 600 (config), 600~700 (私钥)
~/.config/ 用户应用程序配置 (XDG 标准) -
~/.local/share/ 用户数据 (XDG 数据目录) -
~/.cache/ 用户缓存 (XDG 缓存目录) 可清理
/root/ root 用户专属家目录 700 (root:root)

🔐 安全提示: /home 目录权限必须是 700,只有对应用户可以访问自己的家目录

XDG 用户目录规范

# XDG 标准用户目录
~/.config/        # 用户配置文件 (替代旧的 ~/.rc 方式)
~/.local/share/   # 用户数据文件
~/.cache/         # 缓存文件,可安全清理
~/.local/bin/     # 用户本地可执行文件 (类似 ~/bin)

# 常用应用配置位置
~/.config/nvim/          # Neovim 配置
~/.config/code/          # VSCode 配置
~/.config/Code/User/     # VSCode 用户设置
~/.ssh/config            # SSH 配置
~/.gitconfig             # Git 配置
~/.npm/                  # NPM 配置和缓存
~/.pip/                  # PIP 配置和缓存
~/.m2/                   # Maven 配置

5️⃣ 用户程序 /usr

📦 Linux 中最大的目录之一,包含应用程序和库文件

flowchart TB A["/usr/"] --> B[📦 bin/] A --> C[🔧 sbin/] A --> D[📚 lib/] A --> E[🏗️ include/] A --> F[📖 share/] A --> G[⚙️ local/] A --> H[📰 src/] B --> B1[系统命令] C --> C1[管理命令] D --> D1[库文件 .so] E --> E1[C头文件] F --> F1[man 手册页] F --> F2[doc 文档] F --> F3[zone 时区数据] F --> F4[vim 语法高亮] G --> G1[local/bin/] G --> G2[local/lib/] G --> G3[local/etc/] H --> H1[内核源码] H --> H2[其他源码] %% 使用 classDef 定义样式类 classDef usrLevel1 fill:#9b59b6,color:#fff; classDef usrLevel2 fill:#3498db,color:#fff; classDef usrLevel3 fill:#2ecc71,color:#fff; classDef usrLevel4 fill:#f39c12,color:#fff; %% 将样式类应用到对应的节点上 class A usrLevel1 class B,C,D,E,F,G,H usrLevel2 class B1,C1,D1,E1,F1,F2,F3,F4,G1,G2,G3,H1,H2 usrLevel3
📁 子目录 📝 用途 📋 内容示例
/usr/bin/ 大部分用户命令 python, git, docker, nginx
/usr/sbin/ 非必要的系统管理命令 sshd, mysqld
/usr/lib/ 系统库文件 libc.so, libpthread.so
/usr/include/ C/C++ 头文件 stdio.h, pthread.h
/usr/share/ 体系无关数据 手册页、文档、vim 语法文件
/usr/local/ 手动安装的软件(最高优先级) 编译安装的软件的默认位置
/usr/src/ 源代码(可选) 内核源码

📌 优先级规则: /usr/local/bin > /usr/bin > /bin

这意味着如果你在 /usr/local/bin/usr/bin 都有同一个命令,执行的是 /usr/local/bin 里的


6️⃣ 虚拟文件系统

🔮 这些目录不占用实际磁盘空间,内容存储在内存中

flowchart LR subgraph 虚拟文件系统 A["/proc"] --> A1[进程信息] A --> A2[内核参数] A --> A3[硬件信息] B["/sys"] --> B1[设备信息] B --> B2[内核模块] B --> B3[电源管理] C["/dev"] --> C1[设备文件] C --> C2[终端设备] C --> C3[虚拟设备] end %% 使用 classDef 定义样式类 classDef vfsLevel1 fill:#9b59b6,color:#fff; classDef vfsLevel2 fill:#3498db,color:#fff; %% 将样式类应用到对应的节点上 class A,B,C vfsLevel1 class A1,A2,A3,B1,B2,B3,C1,C2,C3 vfsLevel2

/proc - 进程与内核信息

📄 文件/目录 📝 内容 🖥️ 示例命令
/proc/cpuinfo CPU 信息 cat /proc/cpuinfo
/proc/meminfo 内存信息 cat /proc/meminfo
/proc/diskstats 磁盘 I/O 统计 cat /proc/diskstats
/proc/loadavg 系统负载 cat /proc/loadavg
/proc/uptime 系统运行时间 cat /proc/uptime
/proc/version 内核版本 cat /proc/version
/proc/net/dev 网络接口统计 cat /proc/net/dev
/proc/PID/ 指定进程信息目录 -
/proc/sys/ 可调内核参数 sysctl -a
# 🔍 常用 /proc 查看命令
cat /proc/cpuinfo                    # 查看 CPU 详细信息
cat /proc/meminfo                    # 查看内存详细信息
cat /proc/loadavg                    # 查看系统负载 (uptime)
cat /proc/uptime                     # 查看运行时间
cat /proc/version                    # 查看内核版本
cat /proc/cmdline                     # 查看内核启动参数
ls /proc/                            # 查看所有进程 PID
ls /proc/$$/fd                       # 查看当前 shell 打开的文件描述符

# 🔧 内核参数调整
cat /proc/sys/net/ipv4/ip_forward    # 查看 IP 转发是否开启
echo 1 > /proc/sys/net/ipv4/ip_forward # 临时开启 IP 转发
sysctl -w net.ipv4.ip_forward=1       # 效果同上 (持久化修改 /etc/sysctl.conf)

/sys - 系统与设备信息

# 🔍 常用 /sys 查看命令
ls /sys/                             # 查看 sys 目录结构
ls /sys/class/net/                    # 查看所有网络接口
cat /sys/class/net/eth0/operstate    # 查看网络接口状态
ls /sys/block/                        # 查看所有块设备
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor  # CPU 频率调节器

/dev - 设备文件

💾 设备文件 📝 类型 📖 说明
/dev/sda 块设备 第一块 SCSI/SATA 硬盘
/dev/sda1 块设备 第一块硬盘的第一个分区
/dev/null 字符设备 黑洞设备,丢弃所有写入
/dev/zero 字符设备 无限零字节源
/dev/random 字符设备 随机字节生成器(阻塞)
/dev/urandom 字符设备 随机字节生成器(非阻塞)
/dev/tty 字符设备 当前终端
/dev/pts/0 字符设备 伪终端
/dev/null 字符设备 空设备,等同于 Windows 的 NUL
/dev/full 字符设备 磁盘满设备(测试用)
# 📊 常用设备操作命令
ls -la /dev/sd*                      # 列出所有 SCSI 硬盘设备
fdisk -l /dev/sda                    # 查看硬盘分区表
mkfs.ext4 /dev/sda1                  # 格式化分区
mount /dev/sda1 /mnt                 # 挂载分区
dd if=/dev/zero of=/tmp/test bs=1M count=100  # 测试写入速度

# 🔧 设备文件类型
# b = 块设备 (block) - 随机访问,如硬盘
# c = 字符设备 (character) - 顺序访问,如终端
# p = 管道设备 (pipe)
# s = socket (套接字)

7️⃣ 软件安装目录对比

flowchart LR subgraph 系统包管理器 A1["/usr/bin/"] --> A4[apt/yum 安装] A2["/usr/lib/"] --> A4 A3["/usr/share/"] --> A4 end subgraph 手动编译安装 B1["/usr/local/bin/"] B2["/usr/local/lib/"] B3["/usr/local/etc/"] end subgraph 第三方独立软件 C1["/opt/"] --> C3[独立目录结构] C2[如 /opt/idea/, /opt/google/] end subgraph 用户级安装 D1[~/.local/bin/] D2[~/.local/lib/] D3[~/.local/share/] end %% 使用 classDef 定义样式类 classDef pkgLevel1 fill:#9b59b6,color:#fff; classDef pkgLevel2 fill:#3498db,color:#fff; classDef pkgLevel3 fill:#2ecc71,color:#fff; classDef pkgLevel4 fill:#f39c12,color:#fff; %% 将样式类应用到对应的节点上 class A1,A2,A3,A4 pkgLevel2 class B1,B2,B3 pkgLevel3 class C1,C2,C3 pkgLevel4 class D1,D2,D3 pkgLevel1
📁 目录 🎯 适用场景 📝 示例 ✅ 优点 ❌ 缺点
/usr/bin/ 系统包管理器 (apt/yum) nginx, mysql, docker 统一管理,自动更新 权限严格,定制困难
/usr/local/bin/ 手动编译安装 源码编译的 Python 优先级高 需要手动管理
/opt/ 独立软件包 /opt/idea/, /opt/google/chrome 完全独立,易卸载 不在 PATH 中
~/bin/~/.local/bin/ 用户个人脚本 自定义工具 完全用户控制 不影响系统
/snap/ Ubuntu Snap 包 VSCode (snap) 沙盒隔离 占用空间大

💡 选择建议: 生产环境用包管理器安装,第三方软件放 /opt/,个人脚本放 ~/bin/


8️⃣ 其他重要目录

/run - 运行时数据

flowchart TB A["/run/"] --> B[📄 *.pid] A --> C[🔌 *.sock] A --> D[👤 user/] A --> E[🔧 systemd/] B --> B1[nginx.pid] B --> B2[sshd.pid] C --> C1[sshd.sock] C --> C2[docker.sock] %% 使用 classDef 定义样式类 classDef runLevel1 fill:#9b59b6,color:#fff; classDef runLevel2 fill:#3498db,color:#fff; classDef runLevel3 fill:#2ecc71,color:#fff; classDef runLevel4 fill:#f39c12,color:#fff; %% 将样式类应用到对应的节点上 class A runLevel1 class B,C,D,E runLevel2 class B1,B2,C1,C2 runLevel3
📄 内容 📝 说明
/run/*.pid 进程 ID 文件,记录运行中的进程 PID
/run/*.sock Unix Domain Socket 文件
/run/user/UID/ 用户运行时数据(seat, session, xdg-runtime)
/run/systemd/ systemd 运行时目录

/srv - 服务数据

📄 内容 📝 说明
/srv/www/ Web 服务器数据(如 Apache/Nginx 文档根目录)
/srv/ftp/ FTP 服务器数据
/srv/git/ Git 仓库数据
/srv/nfs/ NFS 导出目录

/mnt/media

📁 目录 📝 用途 🔧 典型使用
/mnt/ 临时挂载点 mount /dev/sdb1 /mnt/backup
/media/ 可移动媒体自动挂载点 U 盘、光盘自动挂载到此处
# 手动挂载示例
mount /dev/sdb1 /mnt/backup           # 挂载硬盘
mount -t iso9660 /dev/cdrom /mnt/cdrom # 挂载光盘
umount /mnt/backup                     # 卸载

# 查看当前挂载
df -h                                  # 查看磁盘使用率和挂载点
mount                                  # 查看所有挂载

/tmp - 临时文件

⚙️ 特性 📝 说明
权限 1777 (sticky bit 确保用户只能删除自己的文件)
生命周期 重启后清空
用途 临时文件、锁文件、socket
# 临时文件目录特性
ls -ld /tmp
# drwxrwxrwt 10 root root 4096 May 13 10:00 /tmp
#                                    ↑
#                              sticky bit (t)

# 常用临时文件操作
mktemp                                  # 创建临时文件/目录
touch /tmp/test.lock                    # 创建锁文件

🎯 实战速查表

按场景快速定位

flowchart LR A[问题场景] --> B[配置文件位置] A --> C[日志文件位置] B --> B1["🐳 修改 Docker 配置"] B --> B2["🌐 修改 Nginx 配置"] B --> B3["🔐 SSH 配置"] B --> B4["⏰ 定时任务"] B --> B5["📦 包管理源"] B --> B6["🌍 网络配置"] C --> C1["📋 系统日志"] C --> C2["🌐 Web 日志"] C --> C3["🐳 容器日志"] C --> C4["🔐 认证日志"] %% 使用 classDef 定义样式类 classDef scenarioLevel1 fill:#9b59b6,color:#fff; classDef scenarioLevel2 fill:#3498db,color:#fff; classDef scenarioLevel3 fill:#2ecc71,color:#fff; %% 将样式类应用到对应的节点上 class A scenarioLevel1 class B,C scenarioLevel2 class B1,B2,B3,B4,B5,B6,C1,C2,C3,C4 scenarioLevel3
🎯 你要做什么 📂 去哪个目录/文件 💻 关键命令
🐳 修改 Docker 镜像源 /etc/docker/daemon.json sudo systemctl restart docker
🌐 找 Nginx 配置文件 /etc/nginx/nginx.conf nginx -t 测试配置
🔐 SSH 禁止密码登录 /etc/ssh/sshd_config PermitRootLogin no
⏰ 添加定时任务 /etc/crontab crontab -e (用户级)
📦 找 YUM/Apt 源 /etc/yum.repos.d//etc/apt/sources.list sudo apt update
🌐 查看系统错误日志 /var/log/messagesjournalctl -xe journalctl -u nginx
📋 查看 Nginx 访问日志 /var/log/nginx/access.log tail -f /var/log/nginx/access.log
🐳 查看 Docker 容器日志 docker logs <container> docker logs -f <container>
🔐 查看谁登录过服务器 /var/log/auth.loglast last -20
🔍 MySQL 数据文件在哪 /var/lib/mysql/ -
📊 Redis 持久化文件 /var/lib/redis/ redis-cli CONFIG GET dir
📧 邮件队列 /var/spool/mail/ mailq
🖥️ 进程信息 /proc/<PID>/ ls -la /proc/$$
🔧 查看系统负载 /proc/loadavg uptime, top, htop
💾 查看磁盘使用 - df -h, du -sh /*
📦 手动安装软件 /opt//usr/local/ -
🔌 挂载 U 盘/硬盘 /mnt/ mount /dev/sdb1 /mnt/
📝 用户环境变量 ~/.bashrc~/.profile source ~/.bashrc
🔑 SSH 密钥 ~/.ssh/ ssh-keygen

🔐 权限速记

flowchart LR A[权限代码] --> B[755 rwxr-xr-x] A --> C[644 rw-r--r--] A --> D[700 rwx------] A --> E[777 rwxrwxrwx] B --> B1["/etc/ 目录"] C --> C1["/etc/ 配置文件"] D --> D1["/root/ 家目录"] D --> D2[~/.ssh/ 目录] E --> E1["/tmp/ 目录"] F[权限计算] --> F1[r=4 w=2 x=1] F --> F2[755 = 7+5+5] %% 使用 classDef 定义样式类 classDef permLevel1 fill:#9b59b6,color:#fff; classDef permLevel2 fill:#3498db,color:#fff; classDef permLevel3 fill:#2ecc71,color:#fff; classDef permLevel4 fill:#f39c12,color:#fff; %% 将样式类应用到对应的节点上 class A,F permLevel1 class B,C,D,E permLevel2 class B1,C1,D1,D2,E1 permLevel3
🔐 权限 🔢 数值 📝 适用对象 📋 示例
755 rwxr-xr-x 系统目录 /etc/ (目录本身)
644 rw-r--r-- 配置文件 /etc/hosts, /etc/passwd
700 rwx------ 敏感目录 /root/, ~/.ssh/
600 rw------- 敏感文件 ~/.ssh/id_rsa (私钥)
777 rwxrwxrwx 临时目录 /tmp/ (有 sticky bit)
4755 rwsr-xr-x SetUID 程序 /usr/bin/passwd
# 常用权限设置命令
chmod 755 /path/to/dir              # 目录755
chmod 644 /path/to/file             # 文件644
chmod 700 ~/.ssh                    # SSH目录安全权限
chmod 600 ~/.ssh/id_rsa             # 私钥安全权限
chmod +x script.sh                  # 添加执行权限
chmod u+x script.sh                 # 仅所有者添加执行权限

# Sticky Bit (粘滞位) - 确保/tmp中用户只能删除自己的文件
chmod 1777 /tmp
# 显示为 drwxrwxrwt

🛠️ 常用操作命令速查

📂 目录操作

ls -la /                             # 列出根目录详情
ls -lh /var/log/                     # 人性化大小显示
tree -L 2 /etc/                      # 树形显示目录结构
find /etc -name "*.conf"             # 查找配置文件
du -sh /var/log/*                    # 查看日志目录大小
df -h                                # 查看磁盘使用率

🔍 日志查看

tail -f /var/log/syslog              # 实时查看日志
tail -100 /var/log/messages | grep error  # 最近100行中的错误
less +G /var/log/messages             # 打开日志文件并跳到最后
journalctl -u nginx.service           # 查看 nginx 服务日志
journalctl -xe                        # 查看错误日志详情
dmesg | less                         # 查看内核日志

📦 软件相关

which nginx                           # 查找命令位置
dpkg -L nginx-common                  # 查看软件包文件列表 (Debian)
rpm -ql nginx                         # 查看软件包文件列表 (RHEL)
ldd /usr/bin/nginx                    # 查看动态库依赖

📌 一句话总结

/bin     → 系统命令 (启动必需)
/sbin    → 系统管理命令 (root)
/etc     → 所有配置文件
/var     → 变化的数据 (日志、缓存、数据)
/usr     → 应用程序和库
/opt     → 第三方独立软件
/home    → 普通用户家目录
/root    → root 用户家目录
/proc    → 内核和进程信息 (内存)
/sys     → 系统硬件信息 (内存)
/dev     → 设备文件 (磁盘、终端等)
/tmp     → 临时文件 (重启清空)
/run     → 运行时 PID 和 socket
/mnt     → 临时挂载点
/media   → 可移动媒体
/srv     → 服务数据 (Web、FTP等)

🎓 进阶学习路线

flowchart LR A[基础] --> B[理解目录用途] B --> C[记住常用路径] C --> D[熟练命令操作] D --> E[理解权限体系] E --> F[FHS 标准深入] F --> G[系统调优] G --> H[故障排查精通] %% 使用 classDef 定义样式类 classDef learnLevel1 fill:#9b59b6,color:#fff; classDef learnLevel2 fill:#3498db,color:#fff; classDef learnLevel3 fill:#2ecc71,color:#fff; classDef learnLevel4 fill:#f39c12,color:#fff; %% 将样式类应用到对应的节点上 class A learnLevel1 class B,C learnLevel2 class D,E,F learnLevel3 class G,H learnLevel4
  1. 基础: 记住每个目录的用途,熟练使用 ls, cd, cat 查看
  2. 进阶: 理解 /proc, /sys 虚拟文件系统的作用
  3. 深入: 学习 FHS 标准,了解为什么这样设计
  4. 精通: 能快速定位任何配置或日志问题

记住:在 Linux 里,不懂就去 /etc 找配置,去 /var/log 找原因!

调试口诀: 配置文件在 /etc,日志文件在 /var,进程信息在 /proc,设备文件在 /dev

posted @ 2026-05-14 10:30  RK5123153  阅读(7)  评论(0)    收藏  举报