在 Windows 上,您可以看到在 powershell 中调出任务管理器或 Get-Process
以获取正在运行的进程列表及其内存和 CPU 使用情况。
您还可以(在 Windows 8 上或 powershell 中的 Get-Service
)查看所有正在运行的服务。然而,对于服务,您不会获得任何这些数字。
从我的开发人员的角度来看,这似乎总是有点奇怪。当然,一项服务需要更多的部署工作,并且难以编码和调试,但除此之外,它只是一个与其他任何程序一样的程序。
我确信服务没有这些数字是有充分理由的,这可能与 Windows 运行服务的方式有关。这是什么原因?
有一个服务宿主进程“svchost.exe”可以启动/处理多个服务。由于资源消耗通常由操作系统在进程级别测量,因此由同一主机进程启动的服务将全部显示为该进程的使用情况。
如果您查看控制面板的“服务”区域并查找启动服务的程序,您会发现大多数 Windows 服务都使用具有不同参数的“svchost.exe”来启动它。
任务管理器显示多个 svchost.exe 实例,因此可以将特定服务隔离到一个 svchost.exe 实例,但您需要知道哪个实例仅服务于兴趣。您可以使用 PowerShell 通过 svchost.exe 启动服务,但卡在进程 ID 上,然后在任务管理器中添加进程 ID 列,这样您就可以看到内存/CPU 使用情况。