1. 程式人生 > 其它 >監控使用記憶體或CPU前十名程序指令碼(文末附有sort和top命令詳解)

監控使用記憶體或CPU前十名程序指令碼(文末附有sort和top命令詳解)

 

一、監控目的

掌握系統程序對系統資源的使用情況,掌握機器動態

 

二、監控方法

 

1、監控命令:

ps(靜態)

top(動態)

 

2、監控方法

通過對工作管理員中的程序對記憶體或CPU的使用情況進行整合,排序得出結論

 

三、監控實現

 

[root@CentOs shell]# cat memory_cpu_use_top10.sh
#! /bin/bash

#統計系統中前十名使用記憶體最多的程序

memory(){

#1、收集工作管理員程序資訊
    temp_file=`mktemp memory.XXX`
    top -b -n 1 > $temp_file
    #或者 ps aux > $temp_file(兩種方法選一個)

#2、按程序統計記憶體使用大小


#tail -n +2 $temp_flime |awk '{array[$11]+=$6}END{for (i in array) print array[i],i}' |sort -k 1 -n -r|head -10
tail -n +8 $temp_file |awk '{array[$NF]+=$6}END{for (i in array) print array[i],i}' |sort -k 1 -n -r|head -10

rm -rf $temp_file
}



#統計系統中前十名使用CPU最多的程序

cpu(){

#1、收集工作管理員程序資訊
    temp_file=`mktemp memory.XXX`
    top -b -n 1 > $temp_file
    #或者 ps aux > $temp_file(兩種方法選一個)

#2、按程序統計cpu使用大小


#tail -n +2 $temp_flime |awk '{array[$11]+=$6}END{for (i in array) print array[i],i}' |sort -k 1 -n -r|head -10
tail -n +8 $temp_file |awk '{array[$NF]+=$9}END{for (i in array) print array[i],i}' |sort -k 1 -n -r|head -10

rm -rf $temp_file
}


echo memory
memory
echo cpu
cpu

[root@CentOs shell]#

 

附:

一、sort命令

1、sort的定義:
sort將檔案的每一行作為一個單位相互比較,比較原則是從首字元向後依次按ASCII碼進行比較,最後將它們按升序輸出。

2、選項
(1)-u:在輸出行中排序並去除重複行。

(2)-r:逆序排序。
說明:sort預設的排序方式是升序的,如果想改成降序,就需要加個-r。

(3)-o:將排序結果寫入檔案中。
說明:由於sort預設是把結果輸出到標準輸出,所以需要用重定向才能將結果寫入檔案,形如sort filename > newfile。但是,如果你想把排序結果輸出到原檔案中,用重定向就不行了。

如:sort -r file3 -o file3

(4)-n:按數值排序。
說明:如果按字元排序,當10與2比較時,排序程式會先比較1和2,這樣就會出現10放在2前面的情況。所以,最好指明排序的方式。

(5)sort的-t選項和-k選項:
   命令格式:sort -t ‘分隔符’ -k ‘指定列數’

如:

sort -nt ';' -k 3 file3(以“;”作為分隔符,對第三列進行數值排序

 

 

二、top命令

1,相當於Windows下的資源管理器,能夠動態實時的顯示系統中程序的資源佔用情況

2、在Linux終端上輸入top命令出現的結果及其表示的含義如下圖:

 

 

 

3、top命令常用的選項引數有:

選項 功能
-d 指定每兩次螢幕資訊重新整理之間的時間間隔,如希望每秒重新整理一次,則使用:top -d 1(預設5秒)
-p 通過指定PID來僅僅監控某個程序的狀態(如:top -p 1  檢視程序號為1的程序)
-S 指定累計模式
-s 使top命令在安全模式中執行。這將去除互動命令所帶來的潛在危險
-i 使top不顯示任何閒置或者僵死的程序
-c

顯示整個命令列而不只是顯示命令名

 

 

 

 

 

 

 

 

 

top -b p 2>/tmp/top.txt   表示將top程序表在/tmp/top.txt中列印兩次。
-q top沒有任何延遲時間的進行重新整理。如果呼叫程式有超級使用者許可權,top將會以儘可能高的優先順序執行。