Windows 系统
在 Windows 中,服务通常被称为“Windows 服务”,它们是在后台运行的可执行程序,没有用户界面。

方法 1:使用 sc 命令(功能最强大,推荐)
sc (Service Control) 是一个功能强大的命令行工具,专门用于与服务控制管理器进行交互。
基本语法:
sc [query] [servicename]
常用命令示例:
-
查看所有服务列表
(图片来源网络,侵删)sc query state= all
state= all会显示所有状态(运行中、已停止等)的服务,如果省略,默认只显示主要服务。
-
查看特定服务的详细信息 将
YourServiceName替换为你想查看的服务名(不区分大小写)。sc query YourServiceName
- 示例: 查看名为 "Spooler" 的打印后台处理程序服务。
sc query Spooler
- 示例: 查看名为 "Spooler" 的打印后台处理程序服务。
-
查看服务的状态(运行中/已停止)
sc queryex YourServiceName
queryex会显示更详细的信息,包括服务的进程 ID (PID),这对于排查问题非常有用。
-
查看服务的依赖关系
sc qc YourServiceName
qc(Query Configuration) 会显示服务的配置信息,包括它依赖哪些服务以及哪些服务依赖它。
如何获取服务名? 服务名通常不是我们在服务管理界面看到的“显示名称”,你可以通过以下方式找到对应的服务名:

- 在服务管理界面(
services.msc)中,右键点击服务 -> “属性”,在“常规”选项卡下可以看到“服务名称”。 - 使用
sc query命令查看列表,列表中会显示SERVICE_NAME。
方法 2:使用 tasklist 命令(通过进程查看)
如果你想查看某个服务对应的进程,可以使用 tasklist。
基本语法:
tasklist /svc
常用命令示例:
-
查看所有进程及其关联的服务
tasklist /svc
这会列出所有正在运行的进程,并在 "Services" 列下显示它们关联的服务名,你可以通过这个命令反向查找某个服务对应的进程 ID。
-
查找特定服务对应的进程
tasklist /fi "SERVICES eq YourServiceName"
- 示例: 查找 "Themes" 服务对应的进程。
tasklist /fi "SERVICES eq Themes"
- 示例: 查找 "Themes" 服务对应的进程。
方法 3:使用 PowerShell(现代 Windows 的首选)
PowerShell 提供了比 sc 更强大、更易于理解的命令来管理服务。
基本语法:
Get-Service [-Name <服务名>]
常用命令示例:
-
获取所有服务
Get-Service
默认会显示服务的 "Status"(状态)和 "Name"(名称)。
-
获取特定服务
Get-Service -Name Spooler # 或者使用通配符 Get-Service -Name *spool*
-
获取格式化的列表(更易读)
Get-Service | Format-Table -AutoSize
-
获取服务的详细配置信息(类似
sc qc)Get-Service -Name Spooler | Select-Object *
- 这会显示该服务的所有属性,包括
DependentServices(依赖服务)、RequiredServices(所需服务)等。
- 这会显示该服务的所有属性,包括
-
只显示正在运行的服务
Get-Service | Where-Object {$_.Status -eq 'Running'}
Linux / macOS 系统
在 Linux 和 macOS 中,服务通常被称为 "daemons"(守护进程),现代系统主要使用 systemd,但一些旧系统可能仍使用 SysVinit 或 Upstart。
方法 1:使用 systemctl 命令(现代 Linux 发行版主流)
systemctl 是 systemd 的核心命令,用于控制系统和服务。
基本语法:
systemctl [status|list-units|list-dependencies] [unit-name]
常用命令示例:
-
查看所有已加载的服务单元状态
systemctl list-units --type=service --all
--type=service只显示服务。--all(-a) 会显示所有服务,包括未加载的。- 状态列显示
active (running)、inactive (dead)等。
-
查看特定服务的状态
systemctl status nginx.service # .service 后缀可省略
这个命令会显示服务的详细状态、主进程 ID、是否开机自启以及最新的日志条目,非常直观。
-
查看服务的依赖关系
systemctl list-dependencies nginx.service
-
查看所有已启用(开机自启)的服务
systemctl list-unit-files --state=enabled
-
查看所有正在运行的服务
systemctl list-units --type=service --state=running
方法 2:使用 service 命令(兼容性更好)
service 命令是 SysVinit 和 Upstart 遗留下来的工具,但 systemd 也对其提供了兼容,它是一个简单的“包装器”命令。
基本语法:
service <服务名> <操作>
常用命令示例:
-
查看服务状态
service nginx status
-
启动服务
service nginx start
-
停止服务
service nginx stop
-
重启服务
service nginx restart
方法 3:使用 ps 和 grep 命令(通过进程查看)
如果你想查看哪些进程正在运行,可以使用 ps 命令。
基本语法:
ps aux | grep <关键词>
常用命令示例:
- 查找所有名为 "nginx" 的进程
ps aux | grep nginx
a显示所有进程u以用户为中心显示x显示没有控制终端的进程grep用于过滤结果,你会看到grep命令自身的结果,可以忽略。
总结对比
| 系统/环境 | 推荐命令 | 主要用途 | 示例 |
|---|---|---|---|
| Windows | sc query |
功能最全面的命令行工具,适合脚本 | sc query Spooler |
powershell |
现代化、功能强大,易于处理结果 | Get-Service -Name Spooler |
|
tasklist /svc |
通过进程查找关联的服务 | tasklist /svc |
|
| Linux/macOS | systemctl |
现代系统首选,功能全面,管理服务生命周期 | systemctl status nginx |
service |
兼容性好,简单直接,用于启停服务 | service nginx status |
|
ps aux \| grep |
查看正在运行的进程,快速排查 | ps aux \| grep nginx |
希望这份详细的总结能帮助您在不同系统中轻松查看和管理服务!
