乐于分享
好东西不私藏

systemd 原生服务列表:功能说明 + 注意事项,随手查

systemd 原生服务列表:功能说明 + 注意事项,随手查

一、什么是 systemd 的“原生服务”

通常有两种理解方式:

  • 理解一(最常用): 指 systemd 软件包自身携带的服务单元。这些 .service 文件随 systemd 一起安装,负责系统最基础的功能,如日志、设备管理、登录管理等。
  • 理解二: 指 systemd 进程直接实现的能力,如 socket 激活、timer 定时器、device 单元等,它们不需要额外的守护进程,本质是 PID 1 的功能延伸。
    Pasted image 20260601101115

二、systemd 原生服务速览表

以下服务均由 systemd 软件包提供,在不同发行版中可能并非全部启用,但单元文件默认存在。

服务单元
功能说明
systemd-journald.service
系统日志收集、存储与管理
systemd-logind.service
用户登录、会话与席位管理
systemd-udevd.service
设备管理与节点创建(udev)
systemd-resolved.service
DNS 解析、mDNS 与 DNSSEC 验证
systemd-networkd.service
网络设备检测与配置
systemd-timesyncd.service
轻量 SNTP 时间同步
systemd-tmpfiles-setup.service
创建临时文件、目录及权限
systemd-tmpfiles-clean.service
定时清理过期临时文件
systemd-random-seed.service
保存/恢复内核随机数种子
systemd-modules-load.service
启动时加载内核模块
systemd-sysusers.service
创建系统用户和组
systemd-sysctl.service
应用 sysctl 内核参数
systemd-binfmt.service
注册额外可执行文件格式
systemd-machine-id-commit.service
提交 /etc/machine-id
systemd-hwdb-update.service
更新硬件数据库索引
systemd-fsck@.service
文件系统检查(模板)
systemd-quotacheck.service
磁盘配额检查与更新
systemd-vconsole-setup.service
虚拟控制台字体与键盘初始化
systemd-hostnamed.service
主机名查询与修改(D-Bus 激活)
systemd-localed.service
区域与语言设置(D-Bus 激活)
systemd-timedated.service
时间、时区与同步设置(D-Bus 激活)
systemd-portabled.service
可移植服务镜像管理
systemd-userdbd.service
增强用户/组查询(userdb)

另外 systemd 还包含大量 .target、.socket、.timer、.device 等原生单元,如 basic.target、syslog.socket,它们同样属于 systemd 项目本身。


三、如何确认一个服务是不是原生

使用包管理器查询该 .service 文件所属的软件包:

# Fedora / RHEL / CentOSrpm -qf /usr/lib/systemd/system/systemd-journald.service# Debian / Ubuntudpkg -S /lib/systemd/system/systemd-journald.service

如果输出是 systemd 这个包,那它就是原生服务;如果是 nginx、docker 等,则为第三方服务。


四、各原生服务详细说明与注意事项

下面对每一个服务逐一介绍其用途及在生产/日常使用中需要留意的要点。


1. systemd-journald.service

  • 介绍: 系统日志守护进程,收集内核、initrd、所有 systemd 服务及进程的日志。日志默认存于 /run/log/journal(内存,重启丢失),若创建 /var/log/journal 则变为持久化。
  • 注意: 
    • 绝对不要禁用,否则所有日志丢失,故障排查极其困难。
    • 配置文件 /etc/systemd/journald.conf,务必关注 SystemMaxUse、MaxFileSec 等限制,防止 /var 被写满。
    • 持久化日志需手动创建目录并保持权限。

2. systemd-logind.service

  • 介绍: 管理用户登录、会话、席位(seat),负责在用户切换时分配设备权限,并参与关机/重启流程,是图形界面和多用户控制台的基础。
  • 注意: 
    • 切勿禁用,否则无法正常登录,无论控制台还是图形界面。
    • /etc/systemd/logind.conf 可配置空闲超时注销(StopIdleSessionSec
      )、电源键行为(HandlePowerKey)等。
    • 在极简容器或精简系统中可能被省略,会导致 su 等命令异常。

3. systemd-udevd.service

  • 介绍: 设备管理器,监听内核 uevent,动态创建/删除 /dev 下设备节点,加载驱动并应用自定义 udev 规则。
  • 注意: 
    • 禁用后无法识别新插入的硬件,设备节点缺失。
    • 自定义规则放入 /etc/udev/rules.d/,修改后需执行 udevadm control --reload 及 udevadm trigger。
    • 调试设备问题可用 udevadm monitor 实时查看事件。

4. systemd-resolved.service

  • 介绍: 提供本地 DNS 存根(127.0.0.53)、LLMNR、mDNS 及 DNSSEC 验证。常用作统一的名称解析接口。
  • 注意: 
    • 与 dnsmasq 等其他 DNS 解析器存在端口冲突(53),不可同时监听。
    • 若启用 resolved,建议由它接管 /etc/resolv.conf(符号链接到其存根文件)。
    • 桌面环境常配合 NetworkManager 使用,服务器环境可按需启用。

5. systemd-networkd.service

  • 介绍: 网络配置管理,尤其适合服务器或有线网络的简单管理。通过 .network 和 .link 文件配置接口。
  • 注意: 
    • 与 NetworkManager 是竞争关系,不可同时管理同一接口。桌面用 NetworkManager,服务器可考虑 networkd。
    • 配置文件位于 /etc/systemd/network/,启动前需停止并禁用其他网络管理服务。
    • 不支持 PPP、高级 Wi-Fi 等功能,只适合作基本的 IP 配置。

6. systemd-timesyncd.service

  • 介绍: 极简的 SNTP 客户端,从远程 NTP 服务器获取时间并同步本地时钟,适合不需要高精度时间服务的环境。
  • 注意: 
    • 不能与 ntpd 或 chrony 同时运行,执行 timedatectl set-ntp true
       会自动启用 timesyncd(前提是其他 NTP 服务已禁用)。
    • 配置在 /etc/systemd/timesyncd.conf,可指定 NTP 服务器。
    • 仅作客户端,不对外提供时间服务。

7. systemd-tmpfiles-setup.service

  • 介绍: 启动时一次性读取 /usr/lib/tmpfiles.d/*.conf 和 /etc/tmpfiles.d/*.conf,创建目录、文件、管道,并设置权限和属性。
  • 注意: 
    • 开机必需,禁用可能导致 /run
      、/tmp 下关键目录缺失,引起服务启动失败。
    • 手动测试配置语法可用 systemd-tmpfiles --create。
    • 新增配置后无需重启,但需手动触发或等待下次启动。

8. systemd-tmpfiles-clean.service

  • 介绍: 由 systemd-tmpfiles-clean.timer 触发,每日清理 /tmp、/var/tmp 等目录中过期的文件。
  • 注意: 
    • 可安全禁用,但 /tmp 将失去自动清理,长期运行可能堆积大量临时文件。禁用时务必同时停止对应的 timer。
    • 清理年龄和范围由 tmpfiles.d 配置文件中的 age 字段决定。

9. systemd-random-seed.service

  • 介绍: 关机时将随机种子保存到 /var/lib/systemd/random-seed,启动时恢复,以保证系统早期就能获得足够质量的随机数。
  • 注意: 
    • 不要禁用,否则早期随机数不足可能影响 SSH 密钥生成、SSL 等安全特性。
    • 该服务执行完成后即退出,不是常驻进程。

10. systemd-modules-load.service

  • 介绍: 从 /etc/modules-load.d/*.conf 读取模块名,在系统启动早期加载指定内核模块。
  • 注意: 
    • 禁用可能导致某些硬件或内核功能不可用(如虚拟网卡、文件系统驱动)。
    • 加载失败不会中断启动,但会在 journal 中留下错误记录。

11. systemd-sysusers.service

  • 介绍: 根据 sysusers.d 配置,在启动时创建系统用户和组,声明式管理,无需调用 useradd。
  • 注意: 
    • 属于关键启动服务,许多系统用户(如 systemd-resolve
      、systemd-timesync)依赖它创建。
    • 配置文件位于 /usr/lib/sysusers.d/ 和 /etc/sysusers.d/,修改后重启或手动执行 systemd-sysusers 生效。

12. systemd-sysctl.service

  • 介绍: 在系统启动时应用 /etc/sysctl.d/*.conf 中的内核参数(如网络调优、安全限制)。
  • 注意: 
    • 禁用后自定义 sysctl 参数完全失效,可能影响性能或安全配置。
    • 加载时若有参数无效会写入 journal,但不阻止启动。

13. systemd-binfmt.service

  • 介绍: 注册可执行文件格式,利用内核 binfmt_misc 机制自动执行非本机二进制(如直接运行 Java .class、跨架构 qemu 程序)。
  • 注意: 
    • 如需运行其他架构的程序(如 ARM 应用在 x86 上),则应启用。
    • 通常随系统自动启动,无需额外干预。

14. systemd-machine-id-commit.service

  • 介绍: 仅在 /etc/machine-id 为空时,将临时 machine-id 提交写入,确保系统拥有唯一标识。
  • 注意: 
    • 一次性服务,执行完即退出,通常只在初次安装或首次启动时触发。
    • 不要手动修改或删除 /etc/machine-id,丢失后 DHCP、日志等依赖该 ID 的功能会异常。

15. systemd-hwdb-update.service

  • 介绍: 将 /etc/udev/hwdb.d/ 等位置的硬件数据库文本文件编译成二进制索引,供 udev 和 systemd 硬件识别使用。
  • 注意: 
    • 一般仅在硬件数据库更新或系统首次启动后运行一次。
    • 可以禁用,但设备可能缺失友好名称或属性。

16. systemd-fsck@.service

  • 介绍: 模板服务,对 /etc/fstab 中第6字段不为 0 的分区执行文件系统检查。
  • 注意: 
    • 不要屏蔽模板本身,如需跳过检查,应在 fstab 中将对应分区的第6字段设为 0,或屏蔽特定实例。
    • 若检查失败,系统会进入 emergency mode,需手动修复。

17. systemd-quotacheck.service

  • 介绍: 在启动时为启用了配额(usrquota、grpquota)的文件系统检查并更新配额文件。
  • 注意: 
    • 仅在 fstab 中明确设置配额选项时才会被自动生成实例。
    • 若使用独立的配额工具管理,可考虑禁用此服务。

18. systemd-vconsole-setup.service

  • 介绍: 根据 /etc/vconsole.conf 设置虚拟控制台的字体、键盘映射和颜色。
  • 注意: 
    • 若键盘布局配置错误,可能导致控制台无法输入密码。务必确保配置正确。
    • 无图形界面的系统依赖此服务提供正确的本地化控制台。

19. systemd-hostnamed.service

  • 介绍: 通过 D-Bus 接口提供主机名查询和修改,hostnamectl 命令的底层依赖。
  • 注意: 
    • 默认按需激活,无需手动启用或禁用。禁用后 hostnamectl set-hostname 将失效。

20. systemd-localed.service

  • 介绍: 通过 D-Bus 管理系统区域和语言设置,localectl 命令依赖此服务。
  • 注意: 
    • 同样按需启动,禁用后 localectl 无法工作。推荐使用该命令修改 locale 设置。

21. systemd-timedated.service

  • 介绍: 通过 D-Bus 接口控制系统时间和时区,timedatectl 命令依赖此服务。
  • 注意: 
    • 按需启动,禁用后 timedatectl 相关功能失效。
    • 该服务会与 timesyncd 或 chronyd 通信以设置时间同步状态。

22. systemd-portabled.service

  • 介绍: 管理可移植服务镜像,支持从磁盘映像附加、分离和运行服务,面向容器化或迁移场景。
  • 注意: 
    • 日常桌面/服务器极少使用,可以安全禁用,除非你使用 portablectl
       工具。

23. systemd-userdbd.service

  • 介绍: 提供基于 JSON 的用户/组记录查询接口,可通过 nss-systemd 替代传统 NSS,支持更丰富的用户属性。
  • 注意: 
    • 多数发行版默认未运行。若 /etc/nsswitch.conf 中为 passwd、group 添加了 systemd 选项,则必须启用此服务。
    • 可用 userctl 等工具进行查询和操作。

五、查看当前运行中的原生服务

执行以下命令可列出所有已激活的运行中服务,然后结合包管理器过滤出 systemd 自带的部分:

systemctl list-units --type=service --state=running

以上便是 systemd 原生服务的完整汇总。绝大部分核心服务(日志、设备、登录、内核配置等)不可随意禁用,可选组件(如 timesyncd、resolved、networkd)则需根据实际环境评估是否与现有服务冲突后再决定启停。

相关学习资料