这是 Linux 系列的第一篇。全系列共 40 篇,分两部分:01~17 篇是上手层,把日常操作讲透、命令参数讲全;18~40 篇是深入层,讲每个机制「为什么被设
上一篇建立了 Linux 内核、发行版和命令来源的坐标系。接下来马上会遇到一个最实际的问题:软件怎样进入系统? apt install nginx 看起来只有一行,背后却不是“从网站下
上一篇讲软件怎样通过包管理器进入系统,这一篇继续解决「东西该放哪、路径怎么解析」。同样先看五个问题: /usr 里放的全是系统程序,为什么叫 usr(u
这一篇假设你已经能用 ls、cd、cp、mv、rm 完成日常操作。所以我们不从「怎么复制文件」讲起,而是从五个用了很久却答不上来的问题讲起: 磁盘
上一篇讲了文件的元数据,这一篇讲怎么看内容。同样五个问题开头: cat 一个 5GB 的日志会发生什么?为什么该用 less? tail -f 和 tail -F 差在哪?为什么日志切割
这一篇的目标不是让你放弃 VS Code 改用 vim,而是解决一个现实问题:登录一台生产服务器,你只有 vi。 服务器上没有图形界面、没有 VS Code Remote、精
find 是最容易「会用但不理解」的命令:大家都会 find . -name '*.log',但一旦条件复杂起来就开始碰运气。 根本原因是大多数人把 find 的参数当成了「选项」,
grep、sed、awk 被称为「文本处理三剑客」。大多数人的状态是:会 grep xxx file,会 sed 's/a/b/g',会 awk '{print $1}',再复杂一点就开始
这一篇讲的是 shell 里最容易「用对但说不清」的部分。它的价值在于:一旦理解了「重定向在命令执行前完成」和「展开有固定的七个阶段」,一大批诡异现象会
这一篇讲操作:怎么建用户、怎么配组、怎么给权限、怎么配 sudo。每个操作都会顺带说清「为什么是这样」,但完整的设计演进史(DAC 的缺陷、ca
这一篇解决「一块盘从插上到能用」的完整链路,以及最高频的运维事故:磁盘满了。 先看五个问题: lsblk、df、du、fdisk -l 分别在回答什么
这一篇讲「把一堆文件变成一个文件」和「把文件搬到别处」。看起来是最简单的操作,但 tar 的参数体系和 rsync 的斜杠语义,是运维事故的两个经典来源。 先看五
进程是操作系统最核心的抽象。这一篇讲怎么看进程、怎么控制进程、以及那些「看起来杀不掉」的进程到底怎么了。 先看五个问题: ps aux 里的 VSZ 和 RSS 有什么区
上一篇讲了进程,这一篇讲怎么把进程变成服务。systemd 的设计之争(为什么它赢了、为什么它被骂)留给第 37 篇,这里只讲实操。 先看五个问题: T
这一篇是上手部分里最实用的一篇:线上故障有很大比例是网络问题,而排查网络问题靠的是「分段定位」的能力。 先看五个问题: ifconfig 为什么被废弃了?ip 命
SSH 是服务端工程师每天都在用、但大多数人只用到 10% 的工具。这一篇把剩下的 90% 补上。 先看五个问题: 密钥认证的完整过程是什么?为什么说私钥永远不会离开
这是上手部分的最后一篇。前面 16 篇讲的命令,最终都会被写进脚本 —— 而脚本的可靠性取决于你是否知道 shell 的那些坑。 先看五个问题: set -euo pipefail 每一项在防什么
从这一篇开始进入第二部分:深入层。前 17 篇回答「怎么用」,接下来 23 篇回答「为什么被设计成这样」。 第一篇不讲具体机制,而是建立一个分析框架:任何
上一篇建立了「理解约束才能理解设计」的框架。这一篇用它分析启动流程 —— 启动是一条环环相扣的链条,每一环都是为了解决前一环留下的问题而存在的。
18 篇讲了「一切皆文件」这个抽象的取舍,这一篇讲内核到底怎么实现它 —— 以及为什么这个实现需要三层对象而不是一层。 先看五个问题: read(fd, buf, n) 从 fd 到实际