檢索進(jìn)程信息
Windows PowerShell中的get-process cmdlet可以幫助你檢索電腦中的進(jìn)程信息。不帶任何參數(shù)地運(yùn)行這個(gè)命令,你可以獲得如下所示的輸出:
Handles |
NPM(K) |
PM(K) |
WS(K) |
VM(M) |
CPU(s) |
ID ProcessName |
------- |
------ |
----- |
----- |
----- |
------ |
-- ----------- |
21018 |
4 |
2084 |
5036 |
35 |
1.84 |
496 1XConfig |
103 |
5 |
1156 |
3560 |
32 |
0.08 |
2308 alg |
69 |
2 |
604 |
2336 |
19 |
2.52 |
1176 ati2evxx |
66 |
2 |
572 |
2216 |
19 |
1.58 |
1772 ati2evxx |
668 |
8 |
3384 |
7592 |
63 |
25.98 |
1512 csrss |
108 |
5 |
940 |
3756 |
35 |
0.95 |
2220 ctfmon |
如果你不確定NPM、WS、VM這些縮寫(xiě)分別代表什么,可以借助下面的表格。
資源名稱 |
縮寫(xiě) |
描述 |
Handles |
無(wú) |
進(jìn)程的智能指針編號(hào),對(duì)內(nèi)存的存儲(chǔ)區(qū)域開(kāi)放。當(dāng)句柄(handles)關(guān)閉時(shí),內(nèi)存被釋放。 |
Non-paged pool (in kilobytes) |
NPM(non-paged memory) |
非分頁(yè)池是從不分頁(yè)到硬盤(pán)的存儲(chǔ)器,因此訪問(wèn)速度更快。 |
Paged pool (in kilobytes) |
PM(paged memory) |
如果有空間需求,分頁(yè)池有可能發(fā)送給磁盤(pán)。這使得分頁(yè)池比非分頁(yè)池更大(因?yàn)榇鎯?chǔ)器空間僅受磁盤(pán)上的頁(yè)面文件限制)一些內(nèi)存讀取操作可能耗時(shí)更長(zhǎng),因?yàn)樾枰牡臄?shù)據(jù)存儲(chǔ)在硬盤(pán)上。 |
Working set (in kilobytes) |
WS |
工作集是指一個(gè)進(jìn)程占用物理內(nèi)存的頁(yè)面集。只有存儲(chǔ)在物理內(nèi)存(當(dāng)前沒(méi)有分頁(yè)到磁盤(pán))的數(shù)據(jù)才在工作集中。 |
Virtual memory (in megabytes) |
VM |
只用于進(jìn)程的虛擬內(nèi)存數(shù)量。 |
CPU time (in seconds) |
CPU (s) |
進(jìn)程占用的處理器時(shí)間(包括所有可用的處理器)。 |
Process ID |
無(wú) |
給定進(jìn)程的唯一標(biāo)識(shí)符。即使在一臺(tái)共享式電腦上,每個(gè)進(jìn)程都只有一個(gè)唯一的進(jìn)程ID。 |
Process name |
無(wú) |
進(jìn)程的易記標(biāo)識(shí),但不同于進(jìn)程ID,它不一定是唯一的。 |
如何檢索最高負(fù)載的進(jìn)程
你不一定需要所有進(jìn)程的列表,但你有必要大致了解哪些進(jìn)程占用了大部分的資源。舉例來(lái)說(shuō),一個(gè)進(jìn)程的工作集(如上面的表格所描述)可以很好地指示其系統(tǒng)內(nèi)存壓力的情況。為了找出工作集大于10MB的所有進(jìn)程,輸入下面的命令:
get-process | where-object {$_.WorkingSet -gt 10000000}
記住,美元符號(hào)代表變量。現(xiàn)在我們來(lái)看這些進(jìn)程的名稱、工作集屬性及其工作集是否是大于(上面命令中的gt) 給定值的。
這個(gè)命令會(huì)找到每個(gè)進(jìn)程,并把結(jié)果發(fā)送給where-object cmdlet做評(píng)價(jià)。然后你就會(huì)收到跟完全列表格式一模一樣的一個(gè)列表,但這個(gè)列表要短得多。
結(jié)束不必要的進(jìn)程
如果你管理自己的電腦,很容易獲取一些無(wú)用進(jìn)程。比如,有一天你在機(jī)場(chǎng)想聯(lián)機(jī),最后可能在電腦里留下Boingo客戶端進(jìn)程。你下載過(guò)某一個(gè)系統(tǒng)審核軟件的試用版本嗎?即使你有幾個(gè)月都沒(méi)有使用過(guò)它,進(jìn)程列表仍可能包含系統(tǒng)審核代理。
當(dāng)然,任務(wù)管理器也可以為你顯示進(jìn)程。但get-process更容易查看數(shù)據(jù),比如你可以不使用滾動(dòng)條查看一個(gè)完整列表。你需要應(yīng)付這些垃圾進(jìn)程,但同時(shí)你也可以結(jié)束它們。(在終止一個(gè)進(jìn)程前你應(yīng)該確定知道自己在干什么,如果你并不確定哪個(gè)進(jìn)程是干什么用的,不要貿(mào)然結(jié)束它)
要結(jié)束一個(gè)進(jìn)程,先從整個(gè)列表或最消耗資源的前十個(gè)進(jìn)程中檢索出它們的識(shí)別信息。然后,運(yùn)行stop-process命令。如果不帶任何參數(shù)運(yùn)行該命令,它會(huì)提示你輸入進(jìn)程ID號(hào)(僅僅輸入進(jìn)程名稱是無(wú)法結(jié)束進(jìn)程的)。你可以根據(jù)自己意愿結(jié)束多個(gè)進(jìn)程。完成后,按Enter鍵就會(huì)退出cmdlet。
你也可以使用–name parameter,stop-process –name processname等命令通過(guò)名稱來(lái)停止進(jìn)程。然而,我并不推薦這樣做。你應(yīng)該養(yǎng)成用進(jìn)程ID結(jié)束進(jìn)程的習(xí)慣。盡管記住進(jìn)程ID比記住進(jìn)程名稱困難,但這對(duì)防止結(jié)束共享電腦上其他人的進(jìn)程有幫助。