菜鸟科技网

重启系统服务 命令

Linux / Unix / macOS 系统

在 Linux 和 macOS 系统中,服务的管理方式主要分为两大类:systemdSysVinit (V),目前绝大多数现代 Linux 发行版(如 Ubuntu 16.04+, CentOS 7+, Debian 8+)都使用 systemd

重启系统服务 命令-图1
(图片来源网络,侵删)

使用 systemd (现代 Linux 发行版,如 Ubuntu, CentOS 7+, Debian)

systemd 是目前的主流,命令更简洁、功能更强大。

核心命令

要重启一个名为 nginx 的服务:

sudo systemctl restart nginx.service

或者,可以省略 .service 后缀(推荐):

sudo systemctl restart nginx

常用相关命令

功能 命令 说明
重启服务 sudo systemctl restart <服务名> 先停止,再启动,适用于服务已卡死但进程仍在运行的情况。
停止服务 sudo systemctl stop <服务名> 停止服务。
启动服务 sudo systemctl start <服务名> 启动服务。
重新加载服务配置 sudo systemctl reload <服务名> 优雅地重新加载配置文件,不中断服务连接。(推荐首选)
重启或重新加载 sudo systemctl reload-or-restart <服务名> 如果服务支持 reload,则执行 reload;否则执行 restart,非常实用!
查看服务状态 sudo systemctl status <服务名> 查看服务是否正在运行,并显示最近的日志。
启用开机自启 sudo systemctl enable <服务名> 设置服务在系统启动时自动运行。
禁用开机自启 sudo systemctl disable <服务名> 禁止服务在系统启动时自动运行。
查看所有服务 systemctl list-units --type=service --state=running 列出所有正在运行的服务。

示例: 假设你的 Nginx 配置文件修改了,最佳实践是:

重启系统服务 命令-图2
(图片来源网络,侵删)
# 1. 先尝试优雅地重新加载配置
sudo systemctl reload nginx
# 如果报错说服务不支持 reload,或者你不确定,可以使用 reload-or-restart
sudo systemctl reload-or-restart nginx
# 如果服务已经完全卡死,无法响应 reload,再使用 restart
sudo systemctl restart nginx

使用 SysVinit (旧版 Linux 或 macOS)

在一些较老的 Linux 发行版(如 CentOS 6, Debian 7)或 macOS 中,使用 service 命令。

核心命令

要重启一个名为 httpd (Apache) 的服务:

sudo service httpd restart

常用相关命令

功能 命令 说明
重启服务 sudo service <服务名> restart 重启服务。
停止服务 sudo service <服务名> stop 停止服务。
启动服务 sudo service <服务名> start 启动服务。
重新加载配置 sudo service <服务名> reload 优雅地重新加载配置。
查看服务状态 sudo service <服务名> status 查看服务状态。

Windows 系统

在 Windows 中,服务的管理主要通过命令行工具 sc 和 PowerShell。

使用 sc 命令 (通用命令行工具)

sc 是一个功能强大的命令行服务控制器,适用于所有 Windows 版本。

重启系统服务 命令-图3
(图片来源网络,侵删)

核心命令

要重启一个名为 "Spooler" (打印后台处理程序) 的服务:

sc stop Spooler
sc start Spooler

或者使用更简洁的 restart 参数(Windows 7 及以上版本支持):

sc restart Spooler

常用相关命令

功能 命令 说明
重启服务 sc <服务名> stop & sc <服务名> startsc restart <服务名> 先停止,再启动。
停止服务 sc stop <服务名> 停止服务。
启动服务 sc start <服务名> 启动服务。
查询状态 sc query <服务名> 查询服务的详细状态信息。
查询所有服务 sc query state= all 列出系统中所有服务的状态。

注意: sc 命令有时可能会因为权限问题或服务依赖而失败,此时需要以管理员身份运行命令提示符。

使用 PowerShell (现代 Windows 的首选)

PowerShell 提供了更面向对象的和更强大的 cmdlet 来管理服务。

核心命令

要重启一个名为 "Winmgmt" (Windows Management Instrumentation) 的服务:

Restart-Service -Name Winmgmt

常用相关命令

功能 命令 说明
重启服务 Restart-Service -Name <服务名> 重启服务。
重启服务 (显示名) Restart-Service -DisplayName "<服务显示名>" 使用服务的显示名来重启。
停止服务 Stop-Service -Name <服务名> 停止服务。
启动服务 Start-Service -Name <服务名> 启动服务。
获取服务状态 Get-Service -Name <服务名> 获取服务的状态。
获取所有服务 Get-Service 列出所有服务。

示例: 以管理员身份运行 PowerShell,然后执行:

# 重启 IIS 相关服务
Restart-Service -Name W3SVC
# 查看所有正在运行的服务
Get-Service | Where-Object {$_.Status -eq 'Running'}

macOS 特殊情况

除了通用的 launchdservice 命令,macOS 上有一些由 Apple 官方维护的服务,通常不直接通过 systemctlservice 重启,而是使用特定的命令。

服务 重启命令 说明
DNS 解析 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder 清除 DNS 缓存。
网络 sudo ifconfig en0 down & sudo ifconfig en0 up (将 en0 替换为你的网络接口名,如 en1Wi-Fi 等)
Core Animation sudo killall -HUP Dock 重启 Dock,有时可以解决界面卡顿问题。
窗口服务器 sudo killall -HUP WindowServer 重启窗口服务器,可解决图形界面严重问题。

总结与对比

操作系统 推荐工具 重启服务命令示例 备注
现代 Linux systemd sudo systemctl restart nginx 首选,功能强大,日志友好。
旧版 Linux SysVinit sudo service httpd restart 逐渐被 systemd 取代。
Windows PowerShell Restart-Service -Name Spooler 首选,现代 Windows 的标准。
Windows sc sc restart Spooler 通用性强,兼容性好。
macOS launchd / brew brew services restart <服务名> 对于通过 Homebrew 安装的服务非常方便。
macOS Apple 命令 sudo killall -HUP Dock 用于系统核心组件。

重要提示: 在执行任何重启服务的命令之前,请确保:

  1. 你有管理员权限 (使用 sudo 或以管理员身份运行)。
  2. 你知道服务名称 (通常是小写,没有空格,如 nginx, sshd, httpd)。
  3. 考虑对用户的影响,重启服务可能会导致短暂的服务中断。
分享:
扫描分享到社交APP
上一篇
下一篇