核心概念定义
重新加载 (Reload)
定义 :在服务进程保持运行的状态下,重新读取配置文件并应用变更
特点:进程不重启,配置热更新,零服务中断
重新启动 (Restart)
定义 :完全终止当前服务进程,然后启动新的进程实例
特点:进程完全重启,所有配置重新加载,服务短暂中断
工作机制对比
重新加载流程
bash
服务运行中 → 发送重载信号 → 重新读取配置 → 应用新配置 → 继续运行
↓
进程PID不变,内存状态保持,连接不中断
重新启动流程
bash
服务运行中 → 停止进程 → 释放资源 → 启动新进程 → 重新初始化
↓
进程PID变化,内存重置,连接中断
技术实现差异
信号机制层面
-
重新加载 :向进程发送
SIGHUP信号触发配置重读 -
重新启动 :先发送
SIGTERM停止进程,再启动新实例
系统资源层面
-
重新加载:保持所有文件描述符和网络连接
-
重新启动:关闭所有资源后重新建立
适用场景分析
适合重新加载的情况
-
配置文件参数调整
-
日志级别变更
-
证书文件更新
-
路由规则修改
必须重新启动的情况
-
二进制程序版本升级
-
内核模块变更
-
内存泄漏修复
-
依赖库更新
操作决策指南
bash
配置变更发生
↓
判断变更类型
├── 仅配置参数 → 重新加载
├── 程序文件更新 → 重新启动
└── 不确定支持 → 尝试重新加载 → 失败则重新启动
智能判断systemctl reload-or-restart:
进行一个判断,因为有的服务只能重启不能重加载
执行逻辑结构图
bash
开始执行 reload-or-restart
↓
尝试向服务发送重载信号 (SIGHUP)
↓
判断服务是否支持重载
├── 支持重载 → 执行重载 → 完成
↓
不支持重载或重载失败
↓
执行完全重启 (停止→启动)
↓
完成配置更新
总结
关键区别记忆点:
-
重新加载 = "换衣服"(外表改变,本质不变)
-
重新启动 = "换人"(完全替换,重新开始)