systemd 系统简介¶
简介¶
systemd 是 Linux 操作系统中的 系统与服务管理器,目前已成为大多数主流 Linux 发行版(如 Debian、Ubuntu、CentOS、RHEL、Fedora)的默认初始化系统(init system)。
Info
在 systemd 这个名字里,最后的 d 并不是随意加的,而是有特殊的含义。
d 的含义:
在 Unix/Linux 的命名习惯中,很多后台守护进程(daemon)都会以 d 结尾,例如:
- sshd → Secure Shell Daemon(SSH 服务的守护进程)
- crond → Cron Daemon(定时任务守护进程)
- httpd → HTTP Daemon(Web 服务守护进程)
所以,systemd = system + d(daemon),表示它是负责管理整个 系统(system) 的 守护进程(daemon)。
- 它运行在后台,持续管理系统启动、服务、日志等工作;
- 作为系统的“核心守护进程”,它像“总管”一样协调其他服务;
- 这个命名既延续了 Unix 传统,也直观表达了“system daemon”的含义
它的主要职责:
- 启动系统:在开机时初始化和启动各种服务、挂载文件系统;
- 管理服务:在系统运行过程中,负责启动、停止、重启、监控服务;
- 统一日志:通过
journald提供集中式日志; - 替代多个工具:整合了启动管理、日志、定时任务、设备与挂载点管理等功能。
主要特点¶
-
开机加速
采用 并行启动 技术,同时启动多个无依赖的服务,明显快于传统 SysVinit。 -
依赖管理
支持复杂的服务依赖关系(A 服务依赖 B 服务,就会自动先启动 B)。 -
统一管理工具
提供systemctl命令统一管理服务、挂载点、定时任务。 -
日志系统
使用journalctl查看日志,不再依赖传统syslog。 -
替代多个旧工具
可以替代init、cron、inetd、syslog等。
核心组件¶
- systemctl:管理服务(启动、停止、开机自启)。
- journalctl:日志查看工具。
- loginctl:管理用户会话。
- timedatectl:管理时间和时区。
- hostnamectl:设置和显示主机名。
- systemd-analyze:分析启动时间。
Unit(单元)¶
systemd 的基本配置和控制对象叫 Unit(单元),每个 unit 用一个 .unit 文件描述。常见类型:
.service→ 服务(如nginx.service).socket→ 套接字激活.timer→ 定时器(cron 的替代).target→ 运行级别组(如multi-user.target).mount→ 文件系统挂载
配置文件位置¶
/etc/systemd/system/→ 管理员自定义服务(优先级最高)/lib/systemd/system/→ 系统自带服务文件/usr/lib/systemd/system/→ 某些发行版使用此目录
架构图¶
总结¶
systemd 就像 Linux 的“服务调度中心”,从系统启动到运行过程中,几乎所有服务、任务、日志、挂载点都由它统一管理。 它让 Linux 系统更加高效、统一,但也因为功能庞大而显得“重量级”。
systemctl 管理服务¶
systemd 常见的排查命令
| 命令 | 说明 |
|---|---|
systemctl status <服务名> |
查看指定服务状态 |
journalctl -xe |
查看系统报错日志 |
systemctl list-units --failed |
查看启动失败的服务 |
systemd 常见的服务控制
| 操作 | 命令示例 | 说明 |
|---|---|---|
| 启动服务 | systemctl start nginx |
启动 nginx 服务 |
| 停止服务 | systemctl stop nginx |
停止 nginx 服务 |
| 重启服务 | systemctl restart nginx |
重启 nginx 服务 |
| 重载配置 | systemctl reload nginx |
重载服务配置(不中断服务) |
| 查看服务状态 | systemctl status nginx |
查看服务是否运行 |
| 查看服务日志 | journalctl -u nginx |
查看 nginx 的日志输出 |
systemd 开机启动管理
| 操作 | 命令示例 | 说明 |
|---|---|---|
| 设置服务开机启动 | systemctl enable nginx |
设置 nginx 开机自启 |
| 取消服务开机启动 | systemctl disable nginx |
禁止 nginx 开机时自动启动 |
| 查看是否已启用 | systemctl is-enabled nginx |
查看是否设置为开机启动 |
| 立即启用但不持久 | systemctl start nginx |
启动但不自动开机自启 |
| 启用并立即启动服务 | systemctl enable --now nginx |
设置自启并立刻启动 |
| 停止并禁止自启服务 | systemctl disable --now nginx |
停止服务并禁用开机自启 |
systemd 系统级操作
| 操作 | 命令 | 说明 |
|---|---|---|
| 重新加载 systemd | systemctl daemon-reexec |
重启 systemd 本身 |
| 重新加载服务列表 | systemctl daemon-reload |
服务文件更改后需执行 |
| 关机 | systemctl poweroff |
关机 |
| 重启 | systemctl reboot |
重启系统 |
| 挂起 | systemctl suspend |
挂起(睡眠)系统 |