監控使用記憶體或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將會以儘可能高的優先順序執行。