首页/系统/Windows 运维速查/sc start / stop 启停服务

sc start / stop 启停服务

脚本化启停单个服务:start/stop 是异步请求,需要轮询 query 确认最终状态。

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

sc start 与 sc stop

这是脚本里启停服务的常用方式。要点在于它们是异步请求:命令返回只表示请求已被受理,并不代表服务已经启动或停止完成,会先进入正在启动或正在停止的中间状态,需要轮询状态查询才能确认最终结果。

基本信息

适用平台Windows CMD(cmd.exe)
语法sc start 服务名;sc stop 服务名;sc query 服务名
异步特性start 与 stop 立即返回,状态先变为正在启动或正在停止
确认方式轮询 sc query 的 STATE 字段直到目标状态
依赖关系sc enumdepend 查看依赖该服务的其他服务
权限要求需要管理员权限

典型使用场景

  • 批量脚本里重启服务,需要等停止完成后再发起启动
  • 图形界面无法停止服务时改用命令行尝试
  • 按依赖顺序启停:先停依赖方,再停被依赖的服务
  • 启动失败时结合状态字段判断卡在哪一步
  • 与 sc config 配合,把临时停用的服务改为手动后不再自启

常用示例

常用示例
REM 请求停止服务
sc stop Spooler
REM 立即查询会看到正在停止,稍后重试
sc query Spooler
REM 确认已停止后再启动
sc start Spooler
REM 查看依赖该服务的其他服务,评估影响
sc enumdepend Spooler
REM 用对象化命令拿结构化状态
powershell -c "Get-Service Spooler | Select-Object Name, Status"

状态字段读法

状态含义下一步
RUNNING已运行正常,无需处理
STOPPED已停止可以执行启动
START_PENDING正在启动稍后重试查询,不要立即判定失败
STOP_PENDING正在停止等待依赖释放后再次确认
PAUSED 与 PAUSE_PENDING已暂停或正在暂停仅支持暂停的服务会出现
脚本里重启服务的正确顺序是:发起停止、轮询到已停止、再发起启动、再轮询到已运行。直接连发停止与启动两条命令,经常因状态尚未切换而失败。
停止被依赖的服务会连带影响上层业务,例如应用服务依赖数据库服务。动手前先用依赖查询确认影响范围,并在维护窗口内操作。

易错点

  • 停止后立即查询看到正在停止就以为失败,实际只是还在停止过程中
  • 脚本里连续调用停止与启动而不等待状态切换,启动会因服务尚未停止而报错
  • 停止被依赖的服务会连带中断上层业务,动手前应确认依赖关系
  • 权限不足时返回拒绝访问,容易被误判为服务不存在
  • 该命令只适用于 Windows 服务,普通进程需要用进程级的结束命令

数据来源与参考

  • Microsoft Learn:sc start
  • Microsoft Learn:sc stop

相关工具

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