首页/系统/Windows 运维速查/sc failure 配置服务失败恢复动作

sc failure 配置服务失败恢复动作

让服务崩溃后自动重启或执行告警脚本:配置第一/二/后续失败动作与计数器重置周期,用 sc qfailure 复核。

Windows 运维速查系统更新于 2026-10-13

sc failure 是什么

服务崩溃后要不要自动拉起来、拉几次、间隔多久,都由服务的恢复策略决定,sc failure 就是配置它的命令。它支持为第一次失败、第二次失败与后续失败分别指定动作,动作可以是重启服务、重启计算机或用 run 执行一条命令。counter reset 周期决定多久把失败计数归零,避免服务偶发失败就被累计到第三次动作。

基本信息

适用平台Windows 客户端与服务器;需管理员权限
语法sc failure <服务名> reset= <秒> actions= <动作>/<毫秒>/… [command= <命令>]
动作取值restart 重启服务、run 执行命令、reboot 重启计算机、takeown 接管自身
时间单位毫秒,60000 即 60 秒
查看语法sc qfailure <服务名>
GUI 对位服务属性 → 恢复 选项卡

典型使用场景

  • 关键常驻服务崩溃后自动拉起,缩短业务中断时间
  • 为反复崩溃的服务设置递延重启间隔,避免频繁重启放大问题
  • 配置失败时执行告警脚本,通知值班人员
  • 排查服务恢复策略是否被改动,用 qfailure 复核现状
  • 部署新服务时按规范一并配置恢复策略,避免上线后无人值守

常用示例

常用示例
sc failure MySvc reset= 900 actions= restart/60000/restart/60000/restart/60000   # 三次失败都重启,间隔 60 秒
sc qfailure MySvc                                  # 复核当前恢复策略
sc failure MySvc reset= 3600 actions= restart/30000/run/30000/run/30000 command= "C:\ops\alert.cmd"   # 后两次执行告警脚本
sc config MySvc start= auto                        # 配套:确保启动类型为自动
sc lock MySvc                                      # 临时锁住服务配置,防止被改
sc qc MySvc | Select-String SERVICE_START_NAME      # 核对运行账户

参数读法

参数含义注意点
reset=失败计数重置周期(秒)到期后失败次数归零
restart/毫秒等待后重启服务单位是毫秒,别写成秒
run/毫秒等待后执行命令以服务账户权限运行
reboot/毫秒等待后重启计算机影响整机,慎用
command=run 动作要执行的命令路径与权限都要确认
恢复策略与退出码相关:服务进程正常退出(返回 0)通常不触发失败动作,只有异常退出才会计数。排查“配了自动重启却没重启”时先看退出码与事件日志里的服务失败记录。
actions 里用 run 时,命令以服务的运行账户(默认 LocalSystem)执行,相当于给这个服务挂了一个高权限触发器。命令路径要放在受保护目录并限制可写权限,避免被替换利用。

易错点

  • 把毫秒当成秒来写,60000 写成了 60,结果服务几乎立刻反复重启,形成重启风暴
  • 配了 restart 却没确认启动类型是自动,失败动作生效但服务本就该停着,行为不可控
  • run 动作的命令有可写权限,被低权限用户替换后成了提权入口
  • 从不复核恢复策略,第三方安装程序改过之后,生产环境的重启行为早已与设计不符

数据来源与参考

  • Microsoft Learn:sc failure
  • Microsoft Learn:Windows 服务恢复选项

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌