Linux 系统目录结构

《Linux 系统目录结构》

📁 学习目标

  1. 掌握 Linux 标准文件系统结构(FHS)及其各目录的作用。
  2. 理解 /bin, /etc, /home, /var, /dev 等关键目录的用途。
  3. 能在阿里云 Ubuntu ECS 上熟练查找和管理各类系统文件。
  4. 学会如何合理规划目录,提升系统维护效率。

🧠 核心重点(表格提炼)

目录 内容说明
/ 根目录,整个文件系统的起点
/bin 基础命令存放目录(如 ls, cp
/boot 启动相关文件(内核、initrd)
/dev 设备文件目录(硬盘、终端等)
/etc 系统配置文件目录
/home 用户主目录
/lib 系统运行所需库文件
/media 挂载可移动设备(U盘、光驱)
/mnt 临时挂载点
/opt 第三方软件安装目录
/proc 进程信息虚拟文件系统
/root 系统管理员 root 的家目录
/run 运行时数据(临时)
/sbin 系统管理命令(如 reboot, fdisk
/srv 提供的服务数据目录
/tmp 临时文件目录
/usr 用户程序与共享资源(只读)
/var 可变数据目录(日志、缓存、邮件等)

🔍 详细讲解

image

1. 根目录 / —— 系统的起点 🏁

所有其他目录都从根目录开始延伸。它是整个文件系统的“总入口”。

📌 注意:

  • 不要随意删除或修改 / 下的文件。
  • 阿里云 ECS 的根目录一般为 /dev/vda1/dev/xvda

📄 查看当前目录结构示例:

ls -l /

2. /bin/sbin —— 命令宝库 ⚙️

/bin

  • 包含所有用户都可以使用的基础命令
  • 如:ls, cp, cat, echo, grep 等。

/sbin

  • 包含系统管理员专用命令
  • 如:reboot, halt, ifconfig, fdisk 等。

📌 注意:

  • 在 Ubuntu 中,部分命令可能被移到 /usr/bin/usr/sbin
  • 使用 which 命令可以查看某个命令的实际路径:
which ls
which ifconfig

3. /boot —— 启动核心 💾

存放启动所需的文件,包括:

  • 内核镜像(vmlinuz-版本号
  • 初始化内存盘镜像(initrd.img
  • GRUB 配置文件(grub.cfg

📌 注意:

  • 如果你升级了内核,旧的文件不会自动删除,占用空间较大。
  • 定期清理 /boot 中旧的内核文件是必要的。

📄 查看当前内核版本:

uname -r

4. /dev —— 设备映射区 🖥️

在 Linux 中,一切皆文件,硬件设备也以文件形式存在于此目录中。

常见设备文件:

  • /dev/sda:第一块硬盘
  • /dev/tty1:第一个终端
  • /dev/null:黑洞设备(丢弃所有写入内容)
  • /dev/zero:产生空字符流

📌 注意:

  • 不要随意操作 /dev 中的设备文件,可能导致系统崩溃。
  • 查看当前磁盘分区情况:
ls /dev/sd*

5. /etc —— 系统配置中心 ⚙️🔧

几乎所有的系统配置文件都存放在此目录中。

常用配置文件举例:

  • /etc/passwd:用户账户信息
  • /etc/shadow:用户密码加密信息
  • /etc/hosts:本地 DNS 映射
  • /etc/resolv.conf:DNS 解析配置
  • /etc/network/interfaces:网络接口配置(Ubuntu 18.04 及更早版本)
  • /etc/netplan/:网络配置文件(Ubuntu 20.04+)
  • /etc/ssh/sshd_config:SSH 服务配置文件
  • /etc/apt/sources.list:APT 软件源地址列表

📌 注意:

  • 修改任何 /etc 下的配置文件前,请务必备份原文件。
  • 可使用 sudo 权限编辑:
sudo nano /etc/ssh/sshd_config

6. /home —— 用户主目录 👤

每个普通用户的“私人空间”,通常位于 /home/用户名

例如:

  • /home/ubuntu 是默认用户 ubuntu 的家目录
  • /home/john 是 john 用户的家目录

📌 注意:

  • 普通用户只能访问自己的主目录,除非获得权限。
  • 家目录下 .bashrc.profile 文件用于设置环境变量和别名。

7. /lib/usr/lib —— 库文件仓库 📚

包含系统运行所需的共享库(类似于 Windows 的 DLL 文件)。

  • /lib:基本运行库,供 /bin/sbin 使用
  • /usr/lib:应用程序使用的库文件

📌 注意:

  • 不要轻易删除这些目录下的文件,否则会导致系统无法正常运行。
  • 使用 ldd 可查看某个程序依赖哪些库:
ldd /bin/ls

8. /media/mnt —— 挂载点 📀

/media

  • 自动挂载可移动设备(如 U盘、CD-ROM)
  • 插入 U盘后,系统会自动创建 /media/ubuntu/卷标名

/mnt

  • 手动挂载临时文件系统(如 NFS、ISO 镜像)
  • 例如挂载一个 ISO 文件:
sudo mount -o loop image.iso /mnt

📌 注意:

  • 挂载完成后记得卸载(umount),避免数据损坏。

9. /opt —— 第三方软件安装地 📦

用于安装第三方大型软件包,如 Google Chrome、JetBrains 系列工具等。

📌 注意:

  • 一些商业软件默认安装到此目录。
  • 不建议手动放置文件,应通过官方安装脚本进行部署。

10. /proc —— 实时进程信息 💡

一个虚拟文件系统,提供系统和进程的实时状态信息。

常见用途:

  • 查看 CPU 信息:cat /proc/cpuinfo
  • 查看内存信息:cat /proc/meminfo
  • 查看正在运行的进程:ls /proc/[数字]

📌 注意:

  • /proc 中的内容不是真实存在的文件,而是由内核动态生成的。
  • 可用于调试和性能分析。

11. /root —— 系统管理员的家目录 🛡️

专属于超级用户 root 的主目录,与普通用户的 /home 分开。

📌 注意:

  • 默认情况下,Ubuntu 不允许直接登录 root,需要手动开启。
  • 重要配置和脚本建议备份到此处。

12. /run —— 运行时数据 🔄

存放系统运行期间产生的临时文件,重启后会被清空。

常见内容:

  • PID 文件(记录服务进程 ID)
  • Socket 文件(进程间通信)

📌 注意:

  • 该目录由 systemd 管理,不建议手动操作。

13. /srv —— 服务数据目录 🌐

用于存储服务器提供的服务数据,如 FTP、Web 站点内容等。

例如:

  • /srv/www:网站根目录
  • /srv/ftp:FTP 共享目录

📌 注意:

  • 可自定义路径,需配合 Nginx/Apache 等服务配置使用。

14. /tmp —— 临时文件夹 🗑️

所有用户都可以在此目录创建临时文件,重启后会被清空。

📌 注意:

  • 不要在此目录存放重要数据。
  • 有些应用会将缓存写入 /tmp,定期清理有助于释放空间。

15. /usr —— 用户程序与共享资源 📁

类似于 Windows 的 Program Files,但内容为只读

子目录说明:

  • /usr/bin:用户命令
  • /usr/sbin:系统命令
  • /usr/local:本地安装软件(推荐位置)
  • /usr/share:共享数据(如图标、文档)
  • /usr/include:C/C++ 头文件
  • /usr/lib:库文件

📌 注意:

  • /usr 通常是一个独立的文件系统挂载点。
  • 不要随意更改其内容,尤其是 /usr/bin/usr/lib

16. /var —— 可变数据目录 📝

存放经常变化的数据,如日志、缓存、数据库、邮件等。

常见子目录:

  • /var/log:系统日志(如 syslog, auth.log
  • /var/cache:软件包缓存(如 APT 缓存)
  • /var/run:运行时数据(软链接到 /run
  • /var/spool:任务队列(如打印任务、邮件队列)
  • /var/lib:程序运行时数据(如 MySQL 数据库)

📌 注意:

  • 日志文件增长较快,建议定期清理或压缩。
  • 使用 journalctl 查看 systemd 日志:
journalctl -b

🧩 实战案例:ECS 上的目录使用场景 🛠️

场景一:查看 Web 服务日志 📄

假设你在 ECS 上部署了一个 Nginx 网站,想查看访问日志:

tail -f /var/log/nginx/access.log

📌 提示:

  • 若日志过大,考虑使用 logrotate 工具进行分割归档。

场景二:修改 SSH 登录配置 🔐

你想禁止 root 登录并更改 SSH 端口:

sudo nano /etc/ssh/sshd_config

修改以下两行:

PermitRootLogin no
Port 2222

保存后重启 SSH 服务:

sudo systemctl restart ssh

📌 提示:

  • 修改端口后,确保阿里云安全组也开放新端口!

场景三:清理 /boot 目录 🧹

升级内核后发现 /boot 空间不足:

dpkg --list | grep linux-image

输出类似:

ii  linux-image-5.15.0-1035-aws        5.15.0-1035.41~20.04.1   amd64        Signed kernel image aws
ii  linux-image-5.15.0-1036-aws        5.15.0-1036.42~20.04.1   amd64        Signed kernel image aws

删除旧内核:

sudo apt purge linux-image-5.15.0-1035-aws

更新 GRUB 并清理残留:

sudo update-grub
sudo apt autoremove

📚 小贴士(建议收藏)🔖

技巧 说明
使用 tree / 查看目录树结构(需安装 tree 包)
使用 du -sh /* 快速查看各目录大小
使用 find / -name "filename" 查找文件
使用 df -h 查看磁盘使用情况
使用 locate filename 快速定位文件(需安装 mlocate

🎯 总结一句话:

“理解 Linux 系统目录结构,就像了解一栋房子的房间布局一样重要——它能让你快速找到想要的东西,并做出正确的决策!”

是否继续下一章?我将继续输出:

  • 《Linux 文件权限管理详解》🔐
  • 《用户与组管理实战》👥
  • 《Shell 命令入门与进阶》🖥️

请告诉我你想深入的方向吧!🚀

posted @ 2023-03-27 20:30  红尘过客2022  阅读(94)  评论(0)    收藏  举报