[英]How to get the memory and cpu usage of a remote server?
我的目的是登錄多台服務器並一一打印出它們的內存和 CPU 使用情況。 我寫了以下腳本
START=1
END=5
for i in {$START..$END}
do
echo "myserver$i"
ssh myserver$i
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}'
logout
done
但它不起作用。 誰能給出解決方案? 非常感謝!
仔細看看你的代碼。 執行 SSH 命令后,您將位於遠程服務器上的 SSH shell 中。 顯然,您的腳本現在希望您(通過鍵盤)與遠程服務器通話。 當它完成時,例如,如果您按 ctrl-c 或 ctrl-d,那么下一個命令(如“free”和“top”)將在您的本地機器上運行。
您必須使用一種“-exec”參數告訴 ssh 它應該在遠程服務器上執行 free 和 top :D
我相信你自己弄清楚如何做到這一點,玩得開心。
有一個用於 CPU/mem 使用的有用命令 - top
。 要獲得結果,請運行此命令。 CPU 使用率 - top -b -n 1 | grep Cpu
top -b -n 1 | grep Cpu
Mem 用法 - top -b -n 1 | grep 'KiB Mem'
top -b -n 1 | grep 'KiB Mem'
在網上搜索並結合了 stackflow 上其他問題的一些答案之后。 我得到以下解決方案。
在您的本地計算機上,您可能希望使用以下 bash 腳本,例如, usage_ssh
START=1
END=3
date
for i in $(seq $START $END)
do
printf '=%.0s' {1..50};
printf '\n'
echo myservery$i
ssh myserver$i -o LogLevel=QUIET -t "~/bin/usage"
done
printf '=%.0s' {1..50};
printf '\n'
printf 'CPU Load: \n'
printf 'First Field\tprocesses per processor\n'
printf 'Second Filed\tidling percentage in last 5 minutes\n'
printf '\n'
printf '\n'
在您的遠程服務器上,您應該有以下名為usage
bash 腳本。 此腳本應位於~/bin
。
free -m | awk 'NR==2{printf "Memory Usage\t%s/%sMB\t\t%.2f%\n", $3, $2, $3/$2*100}';
top -n 1 | grep load | awk '{printf "CPU Load\t%.2f\t\t\t%.2f\n", $(NF-2), $(NF-1)}';
這個想法是,您將調用 use ssh -t <your command>
在遠程文件上運行可執行文件,並在本地計算機的屏幕上獲取輸出。
Sat Mar 28 10:32:34 CDT 2020
==================================================
myserver1
Memory Usage 47418/48254MB 98.27%
CPU Load 0.01 0.02
==================================================
myserver2
Memory Usage 47421/48254MB 98.27%
CPU Load 0.01 0.02
==================================================
myserver3
Memory Usage 4300/84541MB 5.09%
CPU Load 0.02 0.02
==================================================
CPU Load:
First Field processes per processor
Second Filed idling percentage in last 5 minutes
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.