公众号旧文

为什么 Linux 里很多程序后面都带一个 d

作者:胖子阅读 —

我在服务器上敲命令时,突然意识到一个很奇怪的现象。

系统里到处都是这样的名字:

  • systemd
  • journald
  • sshd
  • crond
  • dockerd
  • `tailscaled```

它们的名字后面,都带着一个孤零零的字母 d

这肯定不是巧合,于是我深入探查了一番,最终发现:

d 的背后,是一段从 1970 年代延续至今的 Unix 传统。

一、d 是 daemon 的缩写

daemon 这个词来源于古希腊语 daimon,意思是:

守护灵、在暗中运作的力量。

当年 Unix 的设计者借用了这个词,来形容一类特殊的程序:

  • 它们不占用终端
  • 它们不等待你输入
  • 它们在后台默默运行
  • 它们从系统启动那一刻就开始工作

就像一群看不见的守护精灵。

于是,Unix 给了它们一个名字:

daemon 守护进程

如果我运行一个普通命令,比如:

  • ls
  • ping
  • `top```

这些程序执行完就结束,或者占着终端。

但有些程序不是。

比如:

  • SSH 服务
  • Web 服务器
  • 定时任务系统
  • 日志系统

它们必须一直运行。

它们不能执行完就退出。

它们要:

  • 等待请求
  • 维持连接
  • 处理网络
  • 记录日志
  • 管理资源

这些程序不需要你时刻盯着。

它们自己在后台工作。

所以它们是 daemon。

二、为什么只留下一个字母?

早期 Unix 崇尚一件事:简洁。

如果每个程序都叫:

  • ssh-daemon
  • http-daemon
  • cron-daemon

那命令行会变得很长。

于是形成了一种习惯:daemon → d

于是我们今天看到:

  • sshd(SSH daemon)
  • httpd(HTTP daemon)
  • crond(Cron daemon)
  • named(Name daemon,DNS 服务)
  • syslogd(日志守护进程)

这是工程师之间的默契。

看到 d,就知道这是后台核心服务。

三、现代软件为什么还在延续这个传统?

即便到了今天,这个习惯仍然存在。

比如:

  • dockerd —— Docker 后台进程
  • journald —— 日志守护进程
  • tailscaled —— Tailscale 网络守护进程

以 Tailscale 为例,它其实分成两个角色:

命令 作用
tailscale 控制工具
tailscaled 后台核心进程

真正维持隧道、保持网络连接的,是后者。

也就是说:

前者是遥控器,后者才是机器本体。

这种命名方式,其实是一种角色区分。

四、这不仅仅是命名,而是一种文化

在 Linux 世界里,名字从来不是随便起的。

名字一般要做到:

  • 简短
  • 清晰
  • 可组合
  • 可预期

当我看到一个程序名以 d 结尾,我几乎可以断定:

它是长期运行的后台服务。

这是一种工程文化的传承。

五、它为什么能活到今天?

因为 Unix 有一个特点:向后兼容 + 尊重传统

Linux 继承了 Unix 的文化。

而工程文化一旦形成,就会成为默认规则。

当新的软件开发者要写一个后台服务时,

几乎是下意识地:那就加个 d 吧。

于是几十年后,我们的服务器里仍然住着一群守护精灵。

Linux 里那些以 d 结尾的程序,

不是巧合,不是随便,也不是缩写游戏。

它们是 Unix 时代留下的一种工程语言。

一个字母 d 代表的是:

  • 后台运行
  • 长期驻留
  • 系统核心
  • 默默守护

在服务器世界里,真正重要的,往往都是那些不被看见的东西。