15.Linux systemd和守护进程
Linux : systemd和守护进程
- Systemd 核心功能:
- 并行化启动:显著提升系统启动速度
- 按需激活:仅在需要时启动服务
- 依赖管理:智能处理服务间依赖关系
- 进程跟踪:使用 Linux 控制组(cgroups)管理进程
- 统一管理:替代传统的 SysVinit 和 Upstart
Systemd 单元类型
单元类型 | 扩展名 | 功能描述 | 查看命令 |
---|---|---|---|
服务单元 | .service | 系统服务管理 | systemctl -t service |
套接字单元 | .socket | IPC通信管理 | systemctl -t socket |
路径单元 | .path | 文件系统触发 | systemctl -t path |
目标单元 | .target | 启动目标组 | systemctl -t target |
挂载单元 | .mount | 文件系统挂载 | systemctl -t mount |
设备单元 | .device | 硬件设备管理 | systemctl -t device |
查看所有支持的类型:
systemctl -t help
# 查看所有已激活服务
systemctl list-units --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT
abrt-oops.service loaded active running ABRT kernel
abrt-xorg.service loaded active running ABRT Xorg lo
abrtd.service loaded active running ABRT Automat
accounts-daemon.service loaded active running Accounts Ser
alsa-state.service loaded active running Manage Sound
atd.service loaded active running Job spooling# 查看所有服务启用状态
systemctl list-unit-files --type=service
UNIT FILE STATE
abrt-ccpp.service enabled
abrt-oops.service enabled
abrt-pstoreoops.service disabled
abrt-vmcore.service enabled
abrt-xorg.service enabled
abrtd.service enabled
accounts-daemon.service enabled # 检查特定服务状态
systemctl status chronyd
chronyd.service - NTP client/serverLoaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:chronyd(8)man:chrony.conf(5)# 检查服务激活状态
systemctl is-active chronyd
-unknown
# 检查服务启用状态
systemctl is-enabled chronyd
-disabled
# 启动服务
systemctl start chronyd
-systemctl is-active chronyd
-active
# 停止服务
systemctl stop chronyd
-systemctl is-active chronyd
-unknown# 重启服务(断开连接+重载配置)
systemctl restart chronyd# 重载配置(不中断服务)
systemctl reload chronyd# 查看动态服务日志
tail -f
命令 | 效果 | 文件位置 |
---|---|---|
systemctl enable | 启用开机自启 | 创建 /etc/systemd/system/multi-user.target.wants/serv.service |
systemctl disable | 禁用开机自启 | 删除上述链接文件 |
systemctl mask | 完全屏蔽服务 | 创建链接到 /dev/null |
systemctl unmask | 解除屏蔽 | 恢复原始配置,将链接删除 |
特性 | restart | reload |
---|---|---|
操作本质 | 完整重启服务进程 | 仅刷新配置文件 |
进程ID变化 | 生成新PID | 保持原PID不变 |
服务中断 | 必然中断连接(秒级) | 通常零中断(热加载) |
适用场景 | 二进制更新/重大配置变更 | 配置文件微调 |
执行速度 | 较慢(完整启停) | 极快(毫秒级) |
资源影响 | 内存重新加载 | 共享内存保留 |
实现要求 | 所有服务均支持 | 需服务实现热加载逻辑 |
补充:
restart: 重启服务。这会先停止服务,然后再启动服务。因此服务进程会中断,会有短暂的停机时间。
reload: 重新加载服务的配置文件。这不会重启服务进程,而是让服务进程重新读取其配置文件,应用新的配置,而不会中断服务
/usr/lib/systemd/system/`:软件包安装的默认配置