用於檢查 CPU 使用率的 Shell 腳本

用於檢查 CPU 使用率的 Shell 腳本

我正在嘗試編寫一個 shell 腳本來檢查伺服器的可用記憶體。我正在嘗試下面的程式碼 top -M -n1 | grep "Mem" | awk '{print 0 + $7}' | awk '{ print $1 / 1024 }' | awk '{if ($1 < 1) print "\n Available Free memory is " $1 system("sar -r") }'

我期望輸出為:-

可用記憶體為 0.99 GB
Linux 2.6.18-274.el5 (XXXXXXXXX) 10/15/15

00:00:02 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
00:10:01 4630292 11674812 71.60 342120 8428736 4096440 124 0.00 0
00:20:01 4632356 11672748 71.59 342120 8429228 4096440 124 0.00 0
00:30:01 4595960 11709144 71.81 342128 8429712 4096440 124 0.00 0
00:40:01 4601820 11703284 71.78 342136 8430220 4096440 124 0.00 0
00:50:01 4603536 11701568 71.77 342140 8430828 4096440 124 0.00 0
01:00:01 4600656 11704448 71.78 342152 8431340 4096440 124 0.00 0
01:10:01 4606704 11698400 71.75 342156 8431868 4096440 124 0.00 0
01:20:01 4605780 11699324 71.75 342168 8432384 4096440 124 0.00 0
01:30:01 4606880 11698224 71.75 342172 8432868 4096440 124 0.00 0
01:40:01 4642516 11662588 71.53 342176 8400916 4096440 124 0.00 0
01:50:01 4642224 11662880 71.53 342180 8401400 4096440 124 0.00 0
02:00:01 4604204 11700900 71.76 342184 8402232 4096440 124 0.00 0
02:10:01 4607188 11697916 71.74 342188 8402792 4096440 124 0.00 0
02:20:01 4562004 11743100 72.02 342196 8410480 4096440 124 0.00 0

但是,當我運行上面的命令時,它sar -r首先打印命令的輸出,然後打印行“可用的免費內存為 0.99 GB

有人可以在這裡指導我嗎?

答案1

awk 語句中有多個操作,可以用分號或換行符號分隔操作。在本例中,我;在列印語句「$1」末尾加上了一個分號。

top -M -n1 | grep "Mem" | awk '{print 0 + $7}' | awk '{ print $1 / 1024 }' | awk '{if ($1 < 1) print "\n Available Free memory is " $1 ; system("sar -r") }'

具有多個操作的條件的 awk 語法 -

if(條件式)
{
    行動1;
    行動2;
}

答案2

輸出在 中緩衝awk,但不在 中system。在最後一個 awk 中嘗試插入

fflush();

命令之前system()

awk '{if ($1 < 1) { print "\n Available Free memory is " $1 } fflush();  system("sar -r") }'

相關內容