🐧 Linux 目录结构完全指南
"一切皆文件" —— Linux 的设计哲学
📊 整体架构图
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/messages 或 journalctl -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.log 或 last |
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
- 基础: 记住每个目录的用途,熟练使用
ls,cd,cat查看 - 进阶: 理解
/proc,/sys虚拟文件系统的作用 - 深入: 学习 FHS 标准,了解为什么这样设计
- 精通: 能快速定位任何配置或日志问题
记住:在 Linux 里,不懂就去
/etc找配置,去/var/log找原因!调试口诀: 配置文件在
/etc,日志文件在/var,进程信息在/proc,设备文件在/dev!

浙公网安备 33010602011771号