檢索進程信息
Windows PowerShell中的get-process cmdlet可以幫助你檢索電腦中的進程信息。不帶任何參數地運行這個命令,你可以獲得如下所示的輸出:
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這些縮寫分別代表什么,可以借助下面的表格。
資源名稱 |
縮寫 |
描述 |
Handles |
無 |
進程的智能指針編號,對內存的存儲區域開放。當句柄(handles)關閉時,內存被釋放。 |
Non-paged pool (in kilobytes) |
NPM(non-paged memory) |
非分頁池是從不分頁到硬盤的存儲器,因此訪問速度更快。 |
Paged pool (in kilobytes) |
PM(paged memory) |
如果有空間需求,分頁池有可能發送給磁盤。這使得分頁池比非分頁池更大(因為存儲器空間僅受磁盤上的頁面文件限制)一些內存讀取操作可能耗時更長,因為需要的的數據存儲在硬盤上。 |
Working set (in kilobytes) |
WS |
工作集是指一個進程占用物理內存的頁面集。只有存儲在物理內存(當前沒有分頁到磁盤)的數據才在工作集中。 |
Virtual memory (in megabytes) |
VM |
只用于進程的虛擬內存數量。 |
CPU time (in seconds) |
CPU (s) |
進程占用的處理器時間(包括所有可用的處理器)。 |
Process ID |
無 |
給定進程的唯一標識符。即使在一臺共享式電腦上,每個進程都只有一個唯一的進程ID。 |
Process name |
無 |
進程的易記標識,但不同于進程ID,它不一定是唯一的。 |
如何檢索最高負載的進程
你不一定需要所有進程的列表,但你有必要大致了解哪些進程占用了大部分的資源。舉例來說,一個進程的工作集(如上面的表格所描述)可以很好地指示其系統內存壓力的情況。為了找出工作集大于10MB的所有進程,輸入下面的命令:
get-process | where-object {$_.WorkingSet -gt 10000000}
記住,美元符號代表變量。現在我們來看這些進程的名稱、工作集屬性及其工作集是否是大于(上面命令中的gt) 給定值的。
這個命令會找到每個進程,并把結果發送給where-object cmdlet做評價。然后你就會收到跟完全列表格式一模一樣的一個列表,但這個列表要短得多。
結束不必要的進程
如果你管理自己的電腦,很容易獲取一些無用進程。比如,有一天你在機場想聯機,最后可能在電腦里留下Boingo客戶端進程。你下載過某一個系統審核軟件的試用版本嗎?即使你有幾個月都沒有使用過它,進程列表仍可能包含系統審核代理。
當然,任務管理器也可以為你顯示進程。但get-process更容易查看數據,比如你可以不使用滾動條查看一個完整列表。你需要應付這些垃圾進程,但同時你也可以結束它們。(在終止一個進程前你應該確定知道自己在干什么,如果你并不確定哪個進程是干什么用的,不要貿然結束它)
要結束一個進程,先從整個列表或最消耗資源的前十個進程中檢索出它們的識別信息。然后,運行stop-process命令。如果不帶任何參數運行該命令,它會提示你輸入進程ID號(僅僅輸入進程名稱是無法結束進程的)。你可以根據自己意愿結束多個進程。完成后,按Enter鍵就會退出cmdlet。
你也可以使用–name parameter,stop-process –name processname等命令通過名稱來停止進程。然而,我并不推薦這樣做。你應該養成用進程ID結束進程的習慣。盡管記住進程ID比記住進程名稱困難,但這對防止結束共享電腦上其他人的進程有幫助。