Linux目录结构怎么理解_从基础到进阶全流程讲透【教学】

发布时间 - 2025-12-22 00:00:00    点击率:
Linux目录结构遵循FHS规范,核心逻辑是“谁用、谁管、谁改”:/为挂载总入口;/bin、/sbin存基础命令;/etc管配置;/var存可变数据;/usr为只读系统软件区;/opt供第三方独立软件;/home、/root、/run体现运行态;实际存储常通过挂载和符号链接分离。

Linux目录结构不是随意设计的,而是遵循FHS(Filesystem Hierarchy Standard)规范,目的是让不同发行版保持一致、便于管理、安全隔离和软件兼容。理解它,关键不是死记硬背,而是抓住“谁用、谁管、谁改”这三条逻辑线。

根目录 / 是一切的起点,但不等于“C盘”

Windows习惯把系统、程序、用户文件全塞进一个盘符,而Linux的 / 是挂载点总入口——它本身通常不存大量数据,而是组织其他实际存储位置(比如 /home 可能单独挂载在另一块硬盘上)。刚装完系统时 / 下只有十几个标准子目录,每个都有明确职责:

  • /bin/sbin:存放所有用户(/bin)和管理员(/sbin)都能直接运行的基础命令,如 ls、cp、ifconfig。现代发行版常软链接到 /usr/bin 和 /usr/sbin(见下文)
  • /etc:纯文本配置中心。服务开关、网络设置、用户账号(/etc/passwd)、权限策略(/etc/sudoers)全在这里。修改前建议备份,别直接 vim /etc/shadow
  • /var:记录“会变”的东西——日志(/var/log)、邮件队列(/var/spool/mail)、数据库数据(/var/lib/mysql)、网页内容(/var/www)等。它的存在就是为了和只读的系统目录分开

/usr 和 /opt 不是“用户目录”,而是“软件分发区”

新手最易混淆的是 /usr —— 它名字像“user”,实则代表“Unix System Resources”。它是只读的系统级软件仓库:

  • /usr/bin:绝大多数终端命令所在地(比如 python、gcc、curl),普通用户日常使用
  • /usr/lib:对应二进制的库文件和模块(如 /usr/lib/python3.11/),程序运行时动态加载
  • /usr/share:架构无关的资源,比如文档(/usr/share/man)、图标(/usr/share/icons)、字体(/usr/share/fonts)
  • /opt:留给第三方大型独立软件,比如 Google Chrome、JetBrains IDE。它们自成目录(/opt/google/chrome/),不混入 /usr,方便整体卸载

注意:/usr 本应只读,但部分发行版(如 Ubuntu)允许写入;而 /opt 始终由管理员手动管理,包管理器一般不管它。

/home、/root、/run:三个真实“活”的地方

这三个目录体现 Linux 的“运行态”思维:

  • /home/用户名:每个普通用户的私人空间,桌面、下载、配置文件(以 . 开头,如 ~/.bashrc)全在此。权限默认为 755,他人不可写
  • /root:超级用户 root 的家目录,不是 /!它独立存在,保障 root 配置与系统隔离,也避免误操作波及根文件系统
  • /run:内存中的临时运行时数据(tmpfs),每次开机重建。存放 PID 文件(/run/nginx.pid)、套接字(/run/docker.sock)、已登录用户信息(/run/utmp)等。关机即清空,比 /var/run 更轻量、更及时

进阶要点:挂载、符号链接与实际存储分离

真正掌握目录结构,要跳出“目录=文件夹”的直觉,学会看背后的实际挂载:

  • 执行 findmntdf -h,能看到 /、/home、/boot 各自在哪个物理设备或LVM卷上
  • 很多目录是符号链接,例如 ls -l /bin 常显示 → /usr/bin,说明命令实际从 /usr 分发,/bin 只是兼容入口
  • /proc 和 /sys 是虚拟文件系统,不占磁盘空间,而是内核实时生成的接口(如 /proc/cpuinfo 看CPU信息,/sys/class/net/ 查网卡状态)
  • 容器环境里,/ 某些子目录可能被覆盖(如 Docker 中 /etc/hosts 是容器专属),这是 mount namespace 的效果,不是目录错了

基本上就这些。不需要背全,遇到新目录先查 man hier,再看它属于哪个 FHS 类别(配置?可变数据?架构相关?),逻辑就稳了。


# mysql  # linux  # python  # go  # docker  # windows  # nginx  # 硬盘  # ubuntu  # c盘  # curl 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何获取PHP WAP自助建站系统源码?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  香港服务器网站卡顿?如何解决网络延迟与负载问题?  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  Laravel集合Collection怎么用_Laravel集合常用函数详解  青岛网站建设如何选择本地服务器?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  如何正确下载安装西数主机建站助手?  奇安信“盘古石”团队突破 iOS 26.1 提权  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  如何在VPS电脑上快速搭建网站?  如何利用DOS批处理实现定时关机操作详解  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  详解Android图表 MPAndroidChart折线图  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  如何在香港免费服务器上快速搭建网站?  实例解析angularjs的filter过滤器  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  音乐网站服务器如何优化API响应速度?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  JavaScript如何实现倒计时_时间函数如何精确控制  网站制作报价单模板图片,小松挖机官方网站报价?  开心动漫网站制作软件下载,十分开心动画为何停播?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Mybatis 中的insertOrUpdate操作  SQL查询语句优化的实用方法总结  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  如何快速选择适合个人网站的云服务器配置?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  详解jQuery中基本的动画方法  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  QQ浏览器网页版登录入口 个人中心在线进入  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  长沙做网站要多少钱,长沙国安网络怎么样?  EditPlus中的正则表达式 实战(2)  Laravel如何使用Gate和Policy进行授权?(权限控制)  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  清除minerd进程的简单方法  如何用低价快速搭建高质量网站?  如何在Tomcat中配置并部署网站项目?  如何破解联通资金短缺导致的基站建设难题?