Linux 文件系统采用树状结构,所有文件和目录都起始于 根目录 (/)。
Linux 文件系统结构图
graph LR
Root["/ (根目录)"]
subgraph sg_core [核心系统]
Usr["/usr/"]
Boot["/boot/"]
LinkBin["/bin, /sbin, /lib*"]
end
LinkBin -.-> Usr
Root --> Usr
Root --> Boot
Usr --> UsrBin["bin/ (git, python3)"]
Usr --> UsrSbin["sbin/ (nginx)"]
Usr --> UsrLocal["local/ (手动安装)"]
Usr --> UsrLib["lib/ (库文件)"]
subgraph sg_data [配置与数据]
Etc["/etc/"]
Var["/var/"]
Tmp["/tmp/"]
end
Root --> Etc
Root --> Var
Root --> Tmp
Etc --> NginxConf["nginx/"]
Etc --> Systemd["systemd/system/"]
Etc --> Ssh["ssh/"]
Var --> Log["log/"]
Var --> Www["www/"]
subgraph sg_apps [应用软件]
Opt["/opt/"]
Snap["/snap/"]
end
Root --> Opt
Root --> Snap
Opt --> OpenList["openlist/"]
subgraph sg_users [用户空间]
Home["/home/"]
RootHome["/root/"]
end
Root --> Home
Root --> RootHome
subgraph sg_virtual [虚拟文件系统]
DirProc["/proc/"]
DirSys["/sys/"]
DirDev["/dev/"]
DirRun["/run/"]
end
Root --> DirProc
Root --> DirSys
Root --> DirDev
Root --> DirRun
subgraph sg_mounts [外部存储]
Mnt["/mnt/"]
Media["/media/"]
end
Root --> Mnt
Root --> Media
1. 核心系统目录
bin & sbin (Binaries)
- 用途:存放可执行命令。
- 说明:
- bin:存放所有用户皆可使用的基础命令,如
ls,cp,mv等。 - sbin:存放主要用于系统管理的命令,通常只有管理员权限才能执行,如
reboot,fdisk等。
- bin:存放所有用户皆可使用的基础命令,如
etc (Etcetera/Configuration)
- 用途:存放系统及软件的配置文件。
- 说明:Nginx 配置、用户账户信息、网络配置等均位于此处。修改此目录下的文件会直接影响系统或服务的运行行为。
- 例如:我的 Nginx 配置文件位于
/etc/nginx/nginx.conf。
- 例如:我的 Nginx 配置文件位于
lib, lib64 (Libraries)
- 用途:存放系统共享库。
- 说明:类似于 Windows 的
.dll文件,为系统中的程序提供运行时支持。
systemd (System Daemons)
- 关键目录:
/etc/systemd/system/ - 用途:管家大本营。
- 说明:这里存放着“服务配置文件” (
.service文件)。- 当你运行
systemctl enable nginx或systemctl start frps时,系统其实就是去这里找对应的文件。 - docker.service.d/:Docker 服务的自定义配置目录(如代理设置)。
- 如果你想让某个程序开机自动运行,你就得往这里丢一个配置文件。
- 当你运行
boot (Boot Loader)
- 用途:启动文件。
- 说明:存放内核 (
vmlinuz) 和启动引导程序 (GRUB)。一般不用动,除非你在修这台机器的启动问题。
2. 软件都在哪?(Software Locations)
在 Linux 下,软件不像 Windows 那样集中在 Program Files,而是根据安装方式分散在不同位置。以下是我服务器上的实际情况:
系统原生 (APT)
大多数基础工具(如 Python, Git, Nginx)都是通过 apt install 安装的,它们通常位于:
- 可执行文件:
/usr/bin/python3->/usr/bin/python3git->/usr/bin/git
- 配置文件:
/etc/
Note: 我的 Ubuntu 22.04 采用了 Usr Merge 结构,如果不小心在
/bin/下也能找到它们,那是正常的(它是指向/usr/bin/的软链接)。
Ubuntu 特产 (Snap)
如果我用 snap install 装过软件 (如 certbot),它们会住在这里:
/snap/:存放 Snap 软件包的主体。
手动安装 (Manual)
我自己下载或编译的软件,通常建议放在:
/opt/:第三方大型软件的家(比如/opt/openlist)。/usr/local/bin/:单文件工具(比如frpc),放在这里可以直接在终端运行。
3. 用户目录
root
- 用途:系统管理员 (Root 用户) 的主目录。
- 说明:不同于普通用户的
/home目录,Root 用户的主目录直接位于根目录下(/root)。
home
- 用途:普通用户的主目录基础路径。
- 说明:系统中的普通用户(如
admin)的主目录通常为/home/用户名。
4. 可变数据目录
var (Variable)
- 用途:存放经常变化的数据文件。
- 说明:
- /var/www/html:默认的 Web 服务器文档根目录,我的网站文件部署于此。
- /var/log:系统及应用程序的日志文件目录,排查故障时的重要信息来源。
syslog: 系统通用日志。nginx/: Nginx 的访问与报错日志。auth.log: SSH 登录日志(查错必备)。
tmp (Temporary)
- 用途:存放临时文件。
- 说明:系统或程序运行时产生的临时数据,通常在重启后会被自动清理。
5. 设备与虚拟文件系统
dev (Device)
- 用途:设备文件目录。
- 说明:在 Linux 中“一切皆文件”,硬件设备也映射为文件。例如硬盘通常为
/dev/vda。
proc & sys
- 用途:虚拟文件系统。
- 说明:这些目录不占用实际的磁盘空间,而是内存中系统状态的映射。例如
/proc/cpuinfo包含 CPU 的实时信息。
run (Runtime)
- 用途:运行时数据。
- 说明:存放系统运行时的临时信息(如 PID 文件、Socket 文件),重启后消失。和
/var的区别是这里的东西更“瞬时”。
6. 其他常见目录
- mnt & media:主要用于临时挂载外部存储设备(如 U 盘、移动硬盘)。
- opt (Optional):用于安装第三方可选的大型软件。
- 例如:OpenList (网盘聚合程序) 安装在
/opt/openlist/。
- 例如:OpenList (网盘聚合程序) 安装在
- usr (Unix System Resources):包含大量用户级的工具、库和文档。虽然名字看似“User”,但实际存放的是系统级的共享资源。
7. 实战记录:配置 Swap 虚拟内存
为了提升服务器在高负载(如运行 AstrBot 和 NapCat 时)下的稳定性,我手动创建了 2GB 的 Swap 交换空间。这相当于为内存条开辟了“紧急避险车道”。
- 文件路径:
/swapfile(位于根目录) - 大小:2GB
- 配置流程:
- 创建文件:
sudo fallocate -l 2G /swapfile - 设置权限:
sudo chmod 600 /swapfile(仅 root 可读写) - 格式化:
sudo mkswap /swapfile - 启用:
sudo swapon /swapfile
- 创建文件:
- 持久化配置:
已将以下内容写入
/etc/fstab,确保开机自动挂载:/swapfile none swap sw 0 0 - 验证:使用
free -h可以看到 Swap 行不再是 0B。
附:Root 目录下的隐藏文件
使用 ls -a 命令可以查看当前目录下的隐藏文件(以 . 开头),以下是常见的隐藏文件说明:
基础环境
- .bash_history:记录该用户在终端执行过的历史命令。
- .bashrc:Bash shell 的初始化脚本,用于定义别名、环境变量等,每次打开终端时加载。
- .profile:登录时的环境配置文件,通常用于设置全局 PATH。
应用配置
- .ssh:存放 SSH 密钥及配置文件(如
authorized_keys),是远程登录鉴权的关键目录。 - .local:通常包含用户级的程序配置或 Python
pip安装的包(当未使用 Root 权限安装时)。 - .pip:Python pip 包管理器的配置文件目录。
- .swas:阿里云轻量应用服务器 (SWAS) 的监控代理相关数据。
- .rpmdb:RPM 包管理的数据库文件。
常用路径速查 (Cheat Sheet)
| 任务 | 路径 | 常用命令 |
|---|---|---|
| Nginx 配置 | /etc/nginx/ | nginx -t |
| 服务管理 | /etc/systemd/system/ | systemctl status <name> |
| Python3 | /usr/bin/python3 | python3 --version |
| Git | /usr/bin/git | git status |
| 查看日志 | /var/log/ | tail -f syslog |
