Linux 中怎么配置 systemd 服务的优雅停止信号

千瑶小哥_8199

千瑶小哥_8199

2026-08-25

995人浏览

原创

linux systemd 服务优雅停止的关键是设 killmode=process 使仅主进程收 sigterm,并配 timeoutstopsec=20–45 秒让其协调子进程清理,避免默认 control-group 模式导致 worker 被误杀,且无需额外 execstop。

linux 中怎么配置 systemd 服务的优雅停止信号

Linux 中配置 systemd 服务的优雅停止,核心是让主进程收到 SIGTERM 后自行协调子进程完成清理,而不是由 systemd 强制杀掉所有进程。关键不在“发什么信号”,而在于“向谁发”和“给多久时间”。

KillMode 设为 process

默认的 KillMode=control-group 会把 SIGTERM 同时发给 master 和所有 worker 进程,导致 worker 来不及处理完请求就被中断。改成 process 后,systemd 只向主进程(即启动命令直接 fork 的那个)发送信号,其余 worker 由主进程自主管理。

  • Nginx、Redis、自研 QT 后台服务等主从架构程序都适用该模式
  • 避免使用 mixed —— 它对 worker 发 SIGQUIT,可能触发非预期退出
  • none 基本不用,完全放弃 systemd 的终止控制

设置合理的 TimeoutStopSec

主进程需要时间完成优雅退出:关闭监听端口、等待 worker 处理完存量连接、释放锁或刷盘缓存。默认 90 秒太长,10–30 秒更贴近实际需求。

UI Scanner — Website Design System Extraction
UI Scanner — Website Design System Extraction

从给定URL爬取并分析网站的视觉设计系统,识别设计风格、色彩体系、字体排版、组件样式和UI模式。

下载
  • 例如 Nginx 通常 20 秒足够:TimeoutStopSec=20
  • 若业务涉及长连接或批量落库,可设为 30 或 45
  • 超时后 systemd 才 fallback 发 SIGKILL,不是立刻硬杀

不写 ExecStop,依赖程序原生响应

只要主进程能正确捕获 SIGTERM 并执行清理逻辑(绝大多数成熟服务都支持),就不需要额外定义 ExecStop=。手动写脚本反而容易绕过程序内置的优雅流程。

  • 比如 Nginx master 收到 SIGTERM 会自动进入 graceful shutdown 流程
  • 强行加 ExecStop=/bin/kill -15 $MAINPID 是多余操作
  • 只有当程序完全不响应信号时,才需用脚本兜底(属异常情况)

修改并生效的实操步骤

推荐用 systemctl edit 覆盖式修改,不直接编辑原始 unit 文件:

  • 运行 sudo systemctl edit nginx(或其他服务名)
  • 输入:
    [Service]<br>KillMode=process<br>TimeoutStopSec=20
  • 保存退出,执行 sudo systemctl daemon-reload
  • 验证:重启服务后,systemctl stop nginx 观察日志是否出现 “gracefully shutting down” 类提示

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3870

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3333

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2473

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5950

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5582

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3293

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2785

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3019

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习