# 💡Summary
> [!Info]
> 在 Unix 系统中,在后台默默运行、没有图形界面、长时间驻留的进程被称为 **Daemon (守护进程)**。为了方便区分,人们习惯给这类程序加上 `d` 作为后缀。
> - **launchd (2005):** 名字很谦虚,聚焦于它的核心机制——**“怎么把进程启动起来”** (The Launcher)。
> - **systemd (2010):** 名字很霸气,聚焦于它的管辖范围——**“整个操作系统的状态”** (The System Manager)。
>
# 🧩 Cues
[[守护线程]]
# 🪞Notes
### 1. 共同的后缀:`d` = Daemon (守护进程)
这是 Unix/Linux 世界最古老的命名传统。
- `ssh` (客户端) $\rightarrow$ `sshd` (服务端的守护进程)
- `http` (协议) $\rightarrow$ `httpd` (Apache Web 服务器守护进程)
- `mysql` (客户端) $\rightarrow$ `mysqld` (数据库守护进程)
所以,无论是 `system` + `d` 还是 `launch` + `d`,都在告诉用户:**“我是那个在后台一直运行的大管家。”**
---
### 2. `launchd`:强调“动作” (Launch / 启动)
**名字来源:** Apple 在 2005 年(Mac OS X Tiger)推出它时,核心卖点是 **"Launch-on-Demand" (按需启动)**。
- **设计初衷:** 在 `launchd` 之前,Unix 系统启动时会一口气把所有服务(打印机、蓝牙、Web服务)全开了,无论你用不用。这导致开机慢、费内存。
- **"Launch" 的含义:** Apple 的理念是——**不要提前运行服务,而是监听端口**。只有当你插上打印机或者访问 Web 端口的瞬间,`launchd` 才会**发射 (Launch)** 对应的进程。
- **潜台词:** “我是一个**发射器**。你需要谁,我就帮你把谁弹射出来。”
### 3. `systemd`:强调“范围” (System / 系统)
**名字来源:** Lennart Poettering 在 2010 年发布它时,野心要大得多。他不仅仅是想做一个“启动器”,他是想做一个 **"System Manager" (系统管理器)**。
- **设计初衷:** 它的作者认为 Linux 之前的初始化系统太松散了,他想要一个能够接管**整个系统状态**的超级软件。
- **"System" 的含义:** 它不仅仅管进程启动,它还管:
- 挂载文件系统 (`systemd-mount`)
- 用户登录 (`systemd-logind`)
- 系统日志 (`journald`)
- 网络解析 (`systemd-resolved`)
- 时间同步 (`systemd-timesyncd`)
- **潜台词:** “我就是**系统本身**。除了内核 (Kernel) 是董事长,剩下的整个公司(System)都归我管。”
**有趣的历史:** `systemd` 的作者其实公开承认过,`systemd` 的很多核心理念(特别是 Socket Activation 按需启动)正是**抄作业**抄的 `launchd`。只不过后来 `systemd` 的野心膨胀得比 `launchd` 大多了。