systemctl不支持暂停/恢复服务,仅提供运行或停止两种状态;等效方案为stop+start(中断式)或reload(无中断重载,限支持服务)。

systemctl 本身没有“暂停/恢复”服务的原子命令,它不支持像进程那样挂起(suspend)和继续(resume)一个服务。服务在 systemd 中是按需启停的单元,其设计模型是“运行”或“停止”,而非“暂停”。所以不存在一键暂停再一键恢复的服务操作——但你可以用更贴近需求的等效方案实现维护目的。
用 stop + start 模拟暂停与恢复
这是最直接、兼容性最好的方式,适用于所有服务:
-
暂停服务:执行
sudo systemctl stop 服务名,服务进程退出,状态变为inactive -
维护完成后恢复:执行
sudo systemctl start 服务名,服务以全新实例启动 - 注意:这会中断服务连接(如 Web 请求、数据库连接),适合非高可用或可接受短暂中断的场景
用 reload 实现“无中断重载”(仅限支持的服务)
如果你的维护仅涉及配置修改(如改了 nginx.conf 或 sshd_config),且服务本身支持热重载,则可用:
一个OA雏形,主要是完成项目进程管理的功能。 主要实现: 1。新建项目,设定到期时间,如果超过时间自动转为过期项目。 2。过期项目自动提醒,可自定义设定提醒时间或设定几天一次提醒。 3。自己建立的项目只有自己和超级用户有操作权限。 3。重要的项目可设为重要,有醒目标记,如不想被别人看到的项目可以设为独享,此项目只有自己和管理员可以看到。 4。新项目建立人自动显示为登陆时的用户名,可指定多负责人,如
-
不中断服务地应用变更:执行
sudo systemctl reload 服务名 - 成功前提:服务必须监听
SIGHUP并实现配置重载逻辑(常见于 nginx、httpd、rsyslog、sshd 等) - 验证是否支持:
systemctl show 服务名 | grep -i reload,或查官方文档;不支持时会报错Job type reload is not supported
避免误用 mask / unmask 或 disable / enable
这些命令不是暂停手段,容易引发意外:
-
mask是永久屏蔽服务(符号链接指向/dev/null),连手动start都被拒绝,维护后需unmask才能恢复,风险高 -
disable只影响开机自启,对当前运行状态无影响;enable也不等于启动服务 - 它们用于长期策略管理,而非临时维护
补充:为什么不能像进程一样 Ctrl+Z?
systemd 管理的是服务单元(.service 文件定义的完整生命周期),不是前台终端进程。它不暴露 SIGTSTP 接口给用户,也不保存内存状态。所谓“暂停服务”,本质是让 systemd 停止监督该服务进程,并释放资源——这只能通过 stop 完成;后续 start 就是全新启动,而非恢复原状态。










