2013-02-14 19 views
3

上,您可以看到拉起任務管理器或Get-Process在PowerShell中得到與他們的內存和CPU使用率沿運行的進程列表窗口。如何在Windows上看不到內存/ CPU使用率?

你也可以(在Windows PowerShell中的8或Get-Service)查看所有正在運行的服務。然而,對於服務你沒有得到任何這些數字。

但從我的開發人員這點總是顯得有點奇怪。當然,一項服務需要更多的部署工作,而且編碼和調試很尷尬,但除此之外,它只是一個與其他任何程序相同的程序。

我敢肯定有一個很好的理由,爲什麼服務沒有這些數字,一說可能有事情做與如何Windows上運行的服務。這是什麼原因?

+3

要查看內存使用情況的服務,請https://superuser.com/questions/437428/in-windows-7-is-there-a-way-to-know-how-much-memory-a-service -if- – 2014-01-13 01:18:10

+2

爲了防止重新提出這個問題:a)這與windows上的服務如何工作有關,這不是真正的超級用戶問題,b)它已經有一個很好的答案。與上面的超級用戶鏈接配對,它既有幫助又相關。 – 2014-01-13 01:33:26

+0

同意@George Mauer。這屬於這裏。 – DaveBoltman 2016-04-14 06:31:37

回答

2

有一個服務宿主進程「svchost.exe的」,可以啓動/處理多種服務。由於資源消耗通常由流程級別的操作系統來衡量,因此同一主機進程啓動的服務將全部顯示爲該進程的使用情況。

如果您查看控制面板的「服務」區域並查找啓動服務的程序,您會發現大多數Windows服務都使用帶有不同參數的「svchost.exe」來啓動它。

任務管理器顯示svchost.exe的多個實例,因此可以將特定服務隔離到svchost.exe的一個實例,但您需要知道哪個實例僅提供感興趣的服務。您可以使用PowerShell通過svchost.exe啓動服務,但掛在進程ID上,然後在任務管理器中添加進程ID列,以便查看內存/ CPU使用情況。

+0

那麼這是否意味着殺死svchost會殺死所有服務?服務是否不在自己的過程中運行?所有這些工作究竟如何? – 2013-02-14 15:36:59

+0

不一定,某些服務可能由其他進程託管。此外,我還計算了12個運行在我盒子上的svchost實例,其中有些實例可能不想殺死。您將需要較低級別的工具來確定哪個服務在哪個進程中運行,我將從[System Internals](http://technet.microsoft.com/en-US/sysinternals)開始。 – 2013-02-14 16:30:16

+1

出於故障排除的目的,如果我們想要隔離在svchost下運行的任何一個服務,我們可以使用'sc config ServiceName type = own'來實現這一點http://blogs.technet.com/b/ganand/archive/2007/12/23/如何對分離即服務功能於它 - 擁有 - scvhost-exe.aspx – sergmat 2013-02-15 07:51:32

2

儘管我無法找到查看任何單個服務的內存使用情況的方法,但可以通過在命令行中使用tasklist /svc來查看每個svchost實例中運行的服務,以及內存使用情況通過查看進程ID,查看每個單獨的svchost。

相關問題