ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Unix/Linux操作系统入门:内核、发行版、Shell与虚拟机排错

Unix/Linux操作系统入门:内核、发行版、Shell与虚拟机排错 1. 先理清血统Unix 和 Linux 到底是什么关系折腾过几台服务器、亲手装过十几次系统之后我越来越确信一件事很多人学 Linux 卡住不是卡在命令记不住而是卡在最开始那层概念没理顺。Unix 和 Linux 是啥关系内核和发行版有什么分别为什么老鸟张口就是一切皆文件这些问题不解决后面敲的每条命令都像在背咒语今天记明天忘。这篇就当作 Linux 基础系列的开篇专门聊 Unix/Linux 操作系统本身的来龙去脉把家谱、设计思路和几个容易混淆的概念讲透。不管你是刚在虚拟机里装完系统的新手还是用了几年命令却从没细想过底层的人看完应该都能对这套系统有个整体的框架感而不是零散地堆命令。1.1 Unix 的诞生与被分家的历史Unix 的故事得从上世纪六十年代末讲起。当时贝尔实验室参与了一个叫 Multics 的大型分时操作系统项目目标是让多个用户同时用一台机器。Multics 野心太大进度缓慢最后项目被砍。但参与其中的两位工程师 Ken Thompson 和 Dennis Ritchie 不甘心在一台闲置的 PDP-7 小型机上用相对有限的条件重新实现了一套精简的操作系统这就是 Unix 的起点。名字本身就是个梗——Multics 是多路复用的意思他们就把自己的作品叫 Unics后来演变成 Unix。这个故事告诉我们一个很朴素的事实Unix 从诞生那天起就是删繁就简思路的产物不是设计得越复杂越好。真正让 Unix 变得不可替代的是 1973 年用 C 语言重写这个决定。在此之前操作系统基本用汇编编写换一种硬件就得推倒重来。改用 C 之后Unix 变成了一门可移植的系统——只要目标机器有 C 编译器把源码搬过去重新编译就能跑。这一步直接把 Unix 从一台机器上的实验品变成能传播到各大学、研究机构和企业里的通用系统。我常跟人说C 语言和 Unix 是互相成就的一对C 为了写系统而生Unix 因为 C 而走遍世界。不过后面的事情就有点乱了。ATT 因为反垄断约束不能直接卖操作系统于是把源码授权给各大学。加州大学伯克利分校拿到源码后大改一通搞出了 BSDATT 自己后续版本演变成 System V。两派在接口、命令甚至行为细节上都有差异光怎么打印一行字都能吵起来。混乱到什么程度同一段代码在 BSD 上能跑搬到 System V 就报错。正因为这种分裂后来才催生了一个关键东西——POSIX 标准。它规定了一套统一的系统调用和工具接口各家实现照着做程序才有了一定程度的可移植性。1.2 Linux 内核是怎么冒出来的Unix 后来走向商业化源码逐渐闭源价格也上去了。这给了一个空档。1983 年Richard Stallman 发起 GNU 项目目标是从零构建一套完全自由的操作系统配套的工具几乎做齐了——编译器、编辑器、Shell、各种命令唯独内核一直没做出来整个项目就卡在这一环。到了 1991 年赫尔辛基大学的学生 Linus Torvalds 出于个人兴趣写了个内核最初只在邮件列表里低调地说这只是个爱好不会像 GNU 那样大而专业。他没料到的是这个内核配上 GNU 已经攒好的那些工具正好凑齐了一整套完整可用的系统。这里有个概念必须掰清楚严格来说我们平时说的Linux很多时候指的是整个操作系统但准确讲 Linux 只是内核。完整的系统是 GNU 工具集加上 Linux 内核所以有些较真的社区坚持叫它 GNU/Linux。日常交流里没必要抠这个字眼但你要明白内核和整套系统的区别后面理解发行版才不会绕晕。Linus 还做了一个关键决定把内核放在 GPL 协议下发布。这意味着任何人都能自由使用、修改、再分发只要修改后的成果同样开放。这个选择直接决定了 Linux 之后三十年的走向——它不再属于某一家公司而是成了一块公共地基。1.3 内核和发行版别再混着说很多人第一次听到UbuntuCentOSDebian这些名字时会下意识把它们当成不同的操作系统。其实它们都是发行版共用同一个 Linux 内核区别在于外围都装了什么。打个比方内核像是发动机发行版就是整辆车——同样一台发动机有人做成家用轿车有人做成越野车有人做成货车。发动机只负责动力车内装什么座椅、什么中控、什么后备箱是整车厂的决定。发行版厂商做的事就是把内核、GNU 工具、包管理器、桌面环境、软件仓库和文档打包协调成一套开箱即用的东西。包管理器是发行版之间最显眼的差异。Debian 系用 apt 和 dpkg软件包后缀是 .debRed Hat 系用 dnf早期是 yum和 rpm后缀是 .rpm。你从网上下一个安装包装不上十有八九是拿错了体系——这就像汽油车加了柴油不是车坏了是加错了。至于内核版本同一时间不同发行版可能差得很远老牌企业级发行版为了可靠往往用较老但经过长期验证的内核而追求新特性的发行版可能几天就更新一次内核。我见过太多新手在这个环节栽跟头照着某个教程敲命令怎么都不对最后发现教程用的是 Ubuntu自己装的是 CentOS命令和路径根本不一样。所以从学第一天的起就要养成习惯——先确认发行版和版本号再去找对应的资料。查版本很简单cat /etc/os-release # 大多数现代发行版都支持 uname -r # 看当前内核版本提示看到教程就照抄不先确认对方用的什么发行版是新手最容易浪费时间的行为之一。养成先看系统信息的习惯能省掉一半的排查时间。2. 操作系统在背后忙什么从进程到文件的那套机制概念理清之后得看看这套系统平时到底在干什么。很多人用 Linux 就是敲几条命令感觉它无非是个黑框框。可一旦你的程序卡住、内存告急、磁盘写满你就会迫切想知道它内部是怎么运转的。理解操作系统的几项核心职责不是为了应付考试而是为了在出问题时能顺着线索找到病根。这一节我尽量用人话讲不堆术语重点放在这机制是解决什么问题的上。2.1 四大核心职责用生活场景讲一遍操作系统的本职是当硬件和应用程序之间的中间人。硬件资源就那么多——一颗 CPU、几块内存、几个磁盘、一张网卡而上面可能同时跑着几十上百个程序。怎么分配、怎么隔离、怎么防止一个程序把别人搞崩这就是内核每天在干的事。我一般把它拆成四块来讲每块都能对应到你会遇到的具体问题。第一块是进程管理。CPU 核心数有限但程序可以有很多个。内核用调度算法让每个进程轮流占用 CPU 一小段时间切得足够快人眼看起来就像在同时运行。你敲下一条命令却发现终端卡死很可能就是某个进程吃满了 CPU。学到这里你就明白top、ps、kill这些命令存在的意义——它们是让你观察和干预这套调度机制的工具。第二块是内存管理。每个进程都觉得自己独占了一整片连续内存这其实是内核给的幻觉。内核把物理内存切块通过虚拟地址映射发给进程进程之间互不干扰。当物理内存不够时内核会把一部分不常用的数据挪到磁盘上的交换空间swap等要用再换回来。你遇到内存不够但系统没崩的现象多半就是 swap 在兜底。第三块是文件系统。数据要落到磁盘上得有组织方式——哪些扇区属于哪个文件、目录怎么嵌套、权限怎么记录。不同文件系统实现方式不同常见的 ext4、XFS、Btrfs 各有取舍。第四块是设备管理。键盘、网卡、磁盘这些硬件形态各异内核用统一的驱动模型把它们抽象出来应用程序不需要知道具体是哪个牌子的硬盘只要按标准接口读写就行。这四块协作出问题的地方几乎覆盖了日常运维里八成以上的故障。2.2 一切皆文件到底是什么意思这句话被讲烂了但真正理解它的人不多。它的核心意思是在 Unix/Linux 的世界里很多东西都被抽象成文件这种统一的形式然后用同一套操作打开、读取、写入、关闭来处理。普通文本是文件目录是文件键盘是文件硬盘分区是文件甚至正在运行进程的信息、网络连接都能在特定路径下以文件形式看到。这不是哲学口号而是实打实的设计决定带来的好处非常具体。好处之一是接口统一。程序想读一块硬盘和想读一个文本文件用的都是同一组系统调用不用为每种设备写一套专门代码。好处之二是能用现成工具处理各种东西。比如cat能读文件也能读设备节点重定向符号能把命令输出写进文件而那个文件可以是个特殊设备。你甚至可以用echo往某些内核参数文件里写值来调节系统行为比如调一个内核参数# 查看某个内核参数 cat /proc/sys/net/ipv4/ip_forward # 临时修改重启失效 echo 1 /proc/sys/net/ipv4/ip_forward/proc和/sys这两个目录是理解一切皆文件的最佳入口。前者放的是进程和内核运行时的信息后者放的是设备和驱动的信息。你不需要装任何特殊工具用cat、ls就能看到内核当前的很多状态。我第一次知道进程信息能像文件一样读时确实被这种设计震了一下——它把观察系统这件事的门槛降到了会用基本命令就行。2.3 Shell、终端、内核敲一条命令背后的旅程新手另一个常见困惑是分不清终端、Shell 和内核。我这样解释终端是那扇窗户是你敲字和看结果的地方Shell 是坐在窗户后面听你说话的翻译官内核是真正干活的后台。你在终端里输入的每一行其实是先交给 Shell由 Shell 解释成内核能懂的动作再由内核去执行。这个链路走通之后很多现象就顺理成章了。比如你写脚本时用的if、for、变量这些都是 Shell 的语法内核根本不认识真正发给内核的是fork、exec这类系统调用。再比如你在终端里按上下箭头能翻历史命令、按 Tab 能补全那也是 Shell 提供的功能不是终端的。换个 Shell这些行为可能就变了——bash、zsh、fish在补全、提示、脚本语法上都有差异。系统调用这层接口值得单独提一句。它是应用程序请求内核服务的唯一正规通道也是用户态和内核态的分界线。程序在用户态跑权限受限不能直接碰硬件需要读写文件、发网络包、创建进程时就通过系统调用陷入内核态由内核代为完成。这套机制保证了安全——一个普通程序没法随意乱改别人的内存或者直接操作磁盘。你后面学权限、学容器隔离、学安全加固本质都是在和这条分界线打交道。3. 发行版怎么挑从服务器到桌面到国产方案概念讲完接下来是很多人最纠结的实际问题到底装哪个发行版网上说法满天飞某某适合新手某某不适合服务器看多了反而更晕。我的经验是没有最好只有和你的目标最匹配。选之前先回答两个问题你这台机器是拿来学、拿来跑服务还是当日常桌面用你更在意开箱即用的省心还是想借折腾过程逼自己理解系统想清楚这两个问题选择范围立刻缩小一半。3.1 三大主流家族的性格差异Debian 系是很多人的入门首选代表是 Debian 和 Ubuntu。它的特点是软件包管理成熟、社区资料海量、遇到问题基本都能搜到现成答案。Ubuntu 的 LTS 版本每隔两年发布一个长期支持版维护周期长服务器上用得非常多。如果你只是想先把系统跑起来、少踩装驱动的坑从 Ubuntu LTS 入门是性价比很高的选择。缺点是默认装的东西偏多追求极简的人会觉得不够干净。Red Hat 系在企业环境里存在感极强代表是 RHEL以及它的下游重建版 Rocky Linux、AlmaLinux还有已经不再更新维护的传统版本 CentOS。它的特点是文档规范、企业级支持完善、对安全策略比如 SELinux默认更严格。很多公司的服务器环境就是这一系所以如果你是为了工作熟悉它的命令和配置文件布局很有必要。Fedora 是这一系里偏激进的版本新特性上得快适合想尝鲜的人但不建议拿来跑关键服务。Arch 系走的是另一条路——滚动更新装完系统几乎什么都要自己配。它逼着你读文档、理解每个组件的用途所以常被称作能让你真正学会 Linux 的发行版。它的软件仓库更新非常快AUR 里有海量用户贡献的包。代价是更新频率高偶尔会遇到升级后某个组件行为变化需要手动处理。openSUSE 系则介于两者之间自带的管理工具做得比较完善适合想要图形化配置又不想太折腾的人。下面这张表是我按常见使用场景整理的直接抄作业就行使用场景推荐发行版理由纯新手入门Ubuntu LTS资料多驱动兼容性好装完即用服务器 / 企业环境Rocky Linux、Ubuntu Server LTS长期维护文档规范想深入学习内核与机制Arch Linux、Gentoo强制手动配置理解更透桌面日常使用Ubuntu、Fedora、openSUSE桌面环境成熟软件生态好老机器 / 资源紧张Debian、Lubuntu占用低可裁剪性强3.2 国产操作系统的技术路线近几年国内也有了多条操作系统路线值得单独说说。从技术底子看它们大多不是从零写内核而是基于开源体系二次开发再针对本土软硬件做适配。比如银河麒麟有基于 Debian 的分支也有基于欧拉openEuler的分支统信 UOS 桌面版的技术根基偏向 Debian 系openEuler 和龙蜥这类则更偏向服务器和云计算场景走的是开源社区路线任何人都能下载源码和镜像。对普通学习者来说国产系统的意义在于实际工作中可能真的会碰到。它们在使用体验上和主流发行版很接近命令、目录结构基本一致包管理工具多半也是 apt 或 dnf 那一套。所以你要是先学会了 Ubuntu 或 Rocky再切到国产系统上手成本其实很低。需要注意的往往是细节差异软件源配置位置不同、预装工具不一样、某些商业软件只提供特定格式的安装包。遇到问题别慌先确认它是基于哪个上游然后去找上游的通用解法八成能解决。3.3 选完之后别急着换我踩过最多的坑就是发行版跳槽。今天觉得这个不好明天换成那个一年下来换了五六个每个都只学到皮毛。后来我想明白了发行版只是外壳内核、Shell、文件系统、网络这些底层知识是共通的。与其纠结用哪个不如选定一个老老实实把它用熟遇到问题解决掉。等你对某个发行版的理解足够深换到另一个时需要重新适应的部分其实很有限。所以我的建议很直接入门阶段就在 Ubuntu LTS 和 Rocky Linux 里挑一个装上、用起来至少待够半年。等你能熟练处理日常问题、看懂系统日志、会写简单脚本之后再去体验其他发行版那时你会发现它们大同小异切换成本比想象中低得多。这种先深后广的路径比一开始就广撒网效率高得多。4. 动手装一套虚拟机上跑起第一个 Linux光看介绍不动手永远学不会。这一节我带你走一遍在虚拟机里装 Linux 的完整流程。为什么强调虚拟机因为它是新手最安全的练手环境——装坏了直接删掉重来不影响你的主系统想测试危险命令也不怕把真机搞废。我见过有人一上手就双系统结果分区没规划好数据丢了从此对 Linux 有了心理阴影。虚拟机把这种风险降到最低值得先用它把基础操作练熟。4.1 装之前先把资源算清楚虚拟机的资源分配有个基本原则给够用的最低量留出余量给宿主机。CPU 一般分 2 核就够学命令和跑普通服务如果你宿主机本身核心不多别把一半都划出去否则两边都卡。内存方面纯命令行学习给 1 到 2GB 勉强能用但装图形桌面至少要 4GB否则界面会卡到让你想砸键盘。我通常给的是 2 核 4GB这个配置跑大多数入门场景都很顺畅。磁盘是新手最容易低估的一项。很多人随手给 20GB结果装几个软件、拉点数据就满了。我的经验是纯命令行学习给 30GB 起步要装桌面、跑数据库或者做容器实验给 60GB 更稳妥。虚拟磁盘一般用动态分配不会一上来就占满物理空间但它会随着使用逐渐增长所以宿主机上也得留出对应余量。虚拟化平台方面个人学习常用 VMware 和 VirtualBox前者性能好一些后者免费且跨平台。网络模式也得提前想好。NAT 模式下虚拟机通过宿主机上网外部网络看不到它适合单纯学习上网查资料桥接模式下虚拟机会像一台独立设备一样拿到局域网地址方便你在宿主机或者同网段其他机器上用 SSH 连过去操作。我强烈建议学习阶段用桥接再配合 SSH 客户端来操作——在虚拟机窗口里敲命令复制粘贴都别扭用 SSH 连进去体验好太多。4.2 安装过程里的关键选择安装界面通常是图形化的跟着点就行但有几个地方需要你停下来想清楚。第一个是语言和键盘布局选中文没问题但要注意有些服务器版镜像对中文支持一般装完可能显示乱码纯练命令的话选英文反而少些麻烦。第二个是安装类型选择自定义分区还是自动分区新手先用自动分区等熟练了再手动规划。如果你要手动分区这里给个常见方案参考。以 40GB 磁盘为例EFI 分区 512MBUEFI 启动必需/boot 分区 1GB交换分区 swap 视内存而定根分区 / 分 30GB 左右剩余给 /home 或者干脆全给根分区。swap 大小的老规矩是内存的 1 到 2 倍但现在内存普遍较大一般给 4GB 到 8GB 就够日常使用除非你要用休眠功能那时 swap 要大于等于物理内存。分区方案没有绝对标准够用、好扩展就行。安装过程中会要求设置用户名和密码。这里有个实操建议root 密码和普通用户密码分开设置日常操作用普通用户需要提权时用sudo。这习惯看着麻烦但能帮你建立权限意识——很多新手直接拿 root 到处跑一条危险命令下去系统就废了。另外记住你设置的普通用户名装完之后登录用的就是它。整个安装过程大概十几分钟到半小时不等取决于机器性能和镜像大小。4.3 装完必做的收尾动作系统装好第一次登录别急着敲命令先做几件收尾的事能省掉后面一大堆麻烦。第一件是拍快照。虚拟化平台都有这个功能把当前这个刚装完、干干净净的状态存下来。之后不管你把系统搞成什么样都能一键回滚到这个状态。我第一次没拍快照折腾坏了重装了三次那叫一个痛苦。快照就是你的后悔药装完立刻拍一个之后每次大改动前再拍一个。第二件是换软件源。默认源在国内访问可能很慢换成国内镜像站速度会快很多。Debian/Ubuntu 系改/etc/apt/sources.listRed Hat 系改/etc/yum.repos.d/下的仓库文件。改完记得更新缓存# Debian / Ubuntu 系 sudo apt update # Red Hat 系Rocky、Alma 等 sudo dnf makecache第三件是配好网络和 SSH这样你能从宿主机直接连进去操作。先看虚拟机 IPip addr show # 或者简写 ip a hostname -I # 只列出 IP找到网卡对应的地址后在宿主机上用 SSH 客户端连接即可ssh 你的用户名虚拟机IP第四件是设置主机名和时区让环境看起来像个正经服务器sudo hostnamectl set-hostname myserver timedatectl set-timezone Asia/Shanghai timedatectl status最后建议做个基础更新把系统补丁打上。做完这几件事你的实验环境才算真正可用。别小看这些收尾动作很多人后面遇到的网络不通、时间不对、命令找不到追溯回去都是当初这几步没做。注意学习阶段为了少踩权限的坑防火墙和 SELinux 可以暂时放宽但一定要清楚这只是学习环境的权宜之计。以后上生产环境这两样是最基本的防线该怎么配得重新学。5. 新手第一个月踩坑实录报错怎么查讲完安装最后这部分是我最想分享的。前面那些概念和步骤书上都查得到但新手真正卡住的往往是那些突然弹出来、让人一脸懵的报错。这一节我把这些年带新人时最常遇到的几类问题整理出来附上排查思路。我的核心方法论只有一条先别急着重装先读懂报错信息在说什么。绝大多数报错都直白得惊人只是你没耐心看而已。5.1 高频报错与排查思路速查第一类命令找不到。敲一条命令返回command not found。原因通常有三种——软件根本没装、装了但不在 PATH 环境变量里、或者你敲错了名字。先确认有没有装which nginx # 查命令在哪个路径 type nginx # 判断是内置命令还是外部程序 echo $PATH # 看搜索路径包含哪些目录如果确实是没装用包管理器装上就行。要留意的是有些命令属于单独的软件包比如ifconfig属于 net-tools现在很多系统默认不再预装推荐用ip命令替代。第二类权限不够报Permission denied。这是新手撞得最多的一堵墙。多数情况是该操作需要管理员权限加sudo即可但也可能是文件权限本身设置不对。理解ls -l输出的那串rwx很关键尤其要记住对于目录来说r是能否列出内容w是能否在里面创建删除文件x是能否进入该目录。很多人只盯着文件的权限忘了目录的x权限同样是能否访问的门槛。第三类网络相关。典型表现是能ping通 IP 地址但ping域名失败。这说明物理链路没问题卡在域名解析上要查 DNS 配置。Linux 上 DNS 的配置路径有好几处容易打架cat /etc/resolv.conf # 最直接的 DNS 配置 resolvectl status # 用 systemd-resolved 的系统看这个要注意/etc/resolv.conf可能被网络管理服务动态覆盖你手改的内容过一会儿就被冲掉了那种情况得去改网络管理工具本身的上游配置而不是死磕这个文件。第四类服务启动失败。这是最有代表性的一类我拿两个真实案例说明。有个朋友启动数据库时报错说/var/run/mysqld这个 socket 目录不存在。原因是/var/run在不少系统上是内存文件系统重启后内容会清空如果启动脚本没负责重建目录服务就起不来。解法是手动建目录并给对应用户授权或者用系统的临时文件管理机制让它每次启动自动创建。另一个常见的是容器工具连不上守护进程提示无法连接到/var/run/docker.sock八成是后台服务根本没启动或者当前用户没有权限访问那个 socket 文件。排查顺序永远是先看服务状态再看日志。systemctl status 服务名 # 看服务运行状态 journalctl -xe # 看最近的系统日志 journalctl -u 服务名 -n 50 # 只看某个服务最近 50 行日志第五类磁盘满。系统突然各种异常写不进文件服务莫名崩溃很可能是磁盘被占满。先看整体使用率再逐层找出占用大的目录df -h # 看各分区使用情况 du -sh /var/* | sort -h # 找出哪个子目录最大清理时要特别注意/var/log下的日志文件它们经常悄悄涨到几个 G。清日志别直接rm正在被写入的文件删了空间不一定释放建议用truncate清空内容。第六类中文乱码尤其解压压缩包时。用unzip解压 Windows 上打包的 zip中文文件名经常变成一堆问号。这不是系统坏了而是编码不匹配——老压缩包多用 GBK 编码而 Linux 默认 UTF-8。可以指定编码解压或者干脆换成支持自动识别编码的工具。要长期解决还得把系统的 locale 配好确保默认语言环境是 UTF-8。下面这张表把常见现象和首选排查动作对应起来出问题时可以快速对号入座现象最可能原因首选排查动作命令找不到未安装或不在 PATHwhich、echo $PATH权限被拒权限不足或目录缺 x 权限看ls -l按需sudo或chmod域名解析失败DNS 配置问题查/etc/resolv.conf、resolvectl服务起不来服务未启动或缺目录权限systemctl status、journalctl -xe磁盘写不进分区占满df -h、du -sh中文乱码编码不匹配指定编码解压检查 locale5.2 排查的通用套路与学习节奏把上面这些案例放一起看你会发现排查是有固定套路的。第一步永远是看日志不要凭感觉猜。第二步是缩小范围从整体到局部——先确认是系统级问题还是某个服务的问题再看网络、磁盘、权限这些维度。第三步是最小复现把问题步骤拆到最简确认每一步的输入输出。这三步下来绝大部分报错都能定位。还有一点经验之谈遇到报错先原样复制整段错误信息去搜往往比你自己瞎想快十倍。但搜之前要养成习惯去掉自己环境里的具体路径、用户名、IP用通用部分去搜命中率更高。另外善用命令自带的帮助——命令 --help、man 命令很多疑问在这两个地方就有答案只是新手不知道去查。至于学习节奏我的建议是别贪快。第一周把常用命令和目录结构摸熟能独立登录、切目录、看文件、装软件就行第二周开始理解权限、进程、网络这些概念配合出问题时的排查练习第一个月结束能自己装一台服务、配好网络、写个简单脚本、看懂日志就算入门了。别追求把命令大全背下来那是背不完的重要的是理解系统怎么运转遇到没见过的问题知道从哪查起。我自己用了这么多年最深的体会就是Linux 的学习曲线前陡后缓。刚开始那阵子处处报错容易被劝退但只要你扛过这段把底层那几套机制理解透后面会发现几乎所有新东西都是在这些基础上长出来的。命令会忘但机制不会。所以别急着堆命令先把这一篇里的概念——内核与发行版、一切皆文件、Shell 与系统调用、进程与权限——在心里搭成一张网后面的路会好走很多。最后分享一个小习惯每装完一套系统、每解决一个报错都随手记一笔写下现象、原因、解决办法。不用多正式一个纯文本文件就行。半年之后这份笔记就是你自己的故障手册比任何网上的教程都贴合你的实际环境。我早期的笔记里全是各种傻问题但现在回头看正是那些记录让我把零散的经验沉淀成了体系。下一篇我会接着聊文件和目录结构那是理解 Linux 组织方式的下一个关键入口。
返回列表