3

在 Windows 上,您可以看到拉起任务管理器或Get-Process在 powershell 中获取正在运行的进程列表以及它们的内存和 cpu 使用情况。

您还可以(在 Windows 8 或Get-Servicepowershell 中)查看所有正在运行的服务。然而,对于服务,您没有得到任何这些数字。

从我的开发人员的角度来看,这似乎总是有点奇怪。当然,一个服务需要更多的部署工作,并且编码和调试很尴尬,但除此之外它只是一个与其他程序相同的程序。

我确信服务没有这些数字是有充分理由的,这可能与 Windows 运行服务的方式有关。那是什么原因?

4

2 回答 2

2

有一个服务宿主进程“svchost.exe”可以启动/处理多个服务。由于资源消耗通常由操作系统在进程级别测量,因此由同一主机进程启动的服务都将显示为该进程的使用情况。

如果您查看控制面板的“服务”区域并查找启动服务的程序,您会发现大多数 Windows 服务都使用具有不同参数的“svchost.exe”来启动它。

任务管理器显示 svchost.exe 的多个实例,因此可以将特定服务隔离到一个 svchost.exe 实例,但您需要知道哪个实例只为感兴趣的服务提供服务。您可以使用 PowerShell 通过 svchost.exe 启动服务,但要挂在进程 ID 上,然后在任务管理器中添加进程 ID 列,以便查看内存/CPU 使用情况。

于 2013-02-14T15:33:54.753 回答
2

虽然我还没有找到一种方法来查看任何单个服务的内存使用情况,但您可以通过tasklist /svc在命令行中使用来查看每个 svchost 实例中正在运行的服务,以及每个单个 svchost 的内存使用情况查看进程 ID。

于 2013-09-06T02:19:02.253 回答