一. 實時監測進程 top 在一篇里講到ps命令在收集進程信息時非常有用,但它只能顯示某個特定時間點的信息。想要觀察那些頻繁換進換出的記憶體進程趨勢,用top命令是合適的。使用top命令如下圖所示: 在上圖中分為二部份信息,一部份是系統的概述,另一部份是列表的進程概述。 1.1 第一部分 第一行顯示了 ...
一. 實時監測進程 top
在一篇里講到ps命令在收集進程信息時非常有用,但它只能顯示某個特定時間點的信息。想要觀察那些頻繁換進換出的記憶體進程趨勢,用top命令是合適的。使用top命令如下圖所示:
在上圖中分為二部份信息,一部份是系統的概述,另一部份是列表的進程概述。
1.1 第一部分
第一行顯示了當前的系統時間,up是指系統運行時間,user 是指用戶登錄數,以及load average是指系統平均負載。
在平均負載有3個值:最近1分鐘,最近5分鐘,最近15分鐘點。值越大說明系統的負載越高。由於進程短期的突發性活動,出現最近1分鐘的高負載值也很常見。但近15分鐘內平均負載都很高,說明說系統可能有問題。通常系統的負載值超過了2,就說明系統比較繁忙了。
第二行顯示了進程概要信息。 Tasks是進程數叫做任務。包括幾種狀態:運行,休眠,停止,僵化。上圖顯示了1個進程運行, 208個進程休眠。
第三行顯示了CPU概述信息。us和 sy 是進程的屬主(用戶還是系統)。us 是運行用戶進程的cpu時間。sy 是運行內核進程的cpu時間。 ni 是指niced 運行已調整優先順序的用戶進程cpu時間。 wa 是指IO wait 等待IO完成的cpu時間。Hi是指處理硬體中斷的cpu時間。Si是處理軟體中斷的cpu時間。
最後二行是系統記憶體的狀態。 第一行說的是系統的物理記憶體總量。Used當前用了多少記憶體。Free還有多少空閑記憶體。Buff/cache緩存的記憶體量。第二行說的是系統的交換空間。
1.2 第二部份
進程列表顯示了當前運行中的進程詳細列表信息,跟ps -ef命令輸出類似。
列名 |
說明 |
PID |
進程ID |
USER |
進程屬主的名字 |
PR |
進程的優先順序 |
VIRT |
進程占用的虛擬記憶體總量 |
RES |
進程占用的物理記憶體總量 |
SHR |
進程與其它進程共用的記憶體總量 |
S |
進程狀態(D可中斷的休眠狀態,R運行,S休眠,T停止,Z僵化) |
%CPU |
進程使用的CPU時間比例 |
%MEM |
進程使用的記憶體占可用記憶體的比例 |
TIME+ |
進程啟動到現在Cpu時間總量 |
預設情況下,top命令會按照%CPU值對進程排序。當top命令運行監控時,可以使用多種交互命令。例如按下f 鍵允許你選擇對輸出進行排序欄位,預設是%CPU欄位排序。按d鍵允許修改輪詢間隔,按q鍵退出t監控。使用這個工具能經常找出占用系統大部份資源的進程。
下圖是在top監控時,按下f鍵,選擇要排序的欄位。
二.結束進程kill與killall
當管理員找到了占用系統大部份資源的進程時,可能需要手動結束該進程。
2.1 kill 命令
Kill命令通過進程ID(PID)給進程發信號。要發送進程信號,必須是進程的屬主或登錄為root用戶,下圖是查看一個mysqld服務進程。
下麵通過kill 來結束mysqld服務進程。
再來查看mysqld進程是否在運行,如下圖已不存在
2.2 killall 命令
該命令非常強大,它通過支持進程名而不是PID來結束進程。Killall命令也支持通配符。通配符如下,刪除首碼有mysql的字元進程.使用進要小心,有可能結束的重要的系統進程。
下麵是通過進程名來刪除mysqld.pid進程,同樣刪除後mysqld.pid進程不存在了。