時間が経つにつれて、CPU使用率を監視するためにtop(htopは私たちのシステムのオプションではありません)を使用することができました。ユーザーが1時間以上サーバーを100%以上使用している場合は、管理者に電子メール通知が送信されます。
必要な情報を提供するために、以下のコードを簡単に作成しました。以下でコードと結果を見ることができます。私が直面している問題は、各プロセスにサーバー名をインライン化する方法がわからないことです。それで残りの作業は大幅に単純化されます。
1 #!/bin/bash
2
3 echo "Script was run at $(date)" >> temp1
4
5 HOSTS=("list of server names")
6
7 for i in ${HOSTS[@]} ; do
8 echo $i >> temp1
9 ssh $i top -b -n 1 | tail -n +7 | awk '$9 >= 100.0' | awk '{print $2, $9, $12}' >> temp1
10 done
11
Currently this is what my script is returning. Only thing I want differently is to have the server name follow each individual process.
serverName1
user 187.1 MATLAB
serverName2
user 144.4 plasma-de+
user 144.4 plasma-de+
user 141.7 plasma-de+
user 138.9 mate-sett+
serverName3
user 100.0 plasma-de+
user 100.0 plasma-de+
答え1
この試み:
ssh $i top -b -n 1 | tail -n +7 | awk '$9 >= 100.0' | awk -v "host=$i" '{print host, $2, $9, $12}' >> temp1