Сценарий оболочки для проверки загрузки ЦП

Я пытаюсь записать сценарий оболочки, который проверит свободную память сервера. Я пробую ниже кода 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") }'

Я ожидаю вывод как: -

Available Free Memory is 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 управляйте сначала, и затем строка "Доступный бесплатно memort составляет 0,99 ГБ

Кто-то может вести меня сюда?

0
задан 16 October 2015 в 06:44
2 ответа

В вашем операторе awk есть несколько действий, которые можно разделить точкой с запятой или новой строкой. В этом случае я добавил точку с запятой ; сразу после конца оператора печати «$ 1».

верх -M -n1 | grep "Mem" | awk '{print 0 + $ 7}' | awk '{print $ 1/1024}' | awk '{if ($ 1 <1) print "\ n Доступно свободной памяти" $ 1; system ("sar -r")} '

синтаксис awk для условного оператора с несколькими действиями -

if (conditional-expression)
{
    action1;
    action2;
}
0
ответ дан 5 December 2019 в 11:51

Вывод буферизируется в awk , но не в системе . В последней awk попробуйте вставить

fflush();

перед командой system () :

awk '{if ($1 < 1) { print "\n Available Free memory is " $1 } fflush();  system("sar -r") }'
0
ответ дан 5 December 2019 в 11:51

Теги

Похожие вопросы