JVMのProcess ID, CPU and Memory
をn秒ごとにキャプチャして出力をファイルに書き込むシェルスクリプトがあります。私のコードは以下の通りです:複数のプログラムを動的に並行して実行するシェルスクリプト
JVM="aaa001_bcdefx01"
systime=$(date +"%m-%d-%y-%T")
for i in {1..10}
do
PID=`ps -auxwww | grep "jdk" | grep $JVM | grep -v grep | cut -c -30 | awk '{print $2}'`
MEM=`ps -auxwww | grep "jdk" | grep $JVM | grep -v grep | cut -c -30 | awk '{print $4 }'`
CPU=`ps -auxwww | grep "jdk" | grep $JVM | grep -v grep | cut -c -30 | awk '{print $3 }'`
printf '%-5s %-20s %-20s %-20s %-20s \n' "$systime $JVM $PID $CPU $MEM " >> $LOGFILE
sleep 5
done
これは、そのサーバーに1つのJVMしかない場合、これは完璧に動作します。どのように私は並列に同じスクリプトを実行し、私はサーバーの複数のJVMを持っている場合詳細をフェッチすることができます。
いくつかの解決策を探して、&
がスクリプトで使用されていますが、これが上記のスクリプトにどのように実装できるのか理解できませんでした。 5つのJVMがあるとしましょう。どのように私は、スクリプトを実行し、並行して、下のすべてのJVMのための統計を並行してフェッチすることができます。親切にガイドします。どんな助けもありがとう。
JVM="aaa001_bcdefx01"
JVM="aaa002_bcdefx01"
JVM="aaa003_bcdefx01"
JVM="aaa004_bcdefx01"
JVM="aaa005_bcdefx01"
上記は冗長に見えます。 '$ systime'とは何ですか?なぜ{1..10}'にいるのですか? – RomanPerekhrest
'systime = $(日付+"%m-%d-%y-%T ")'は時間です。スクリプトで更新されました。私は睡眠時間(間隔)と非常に多くの時間のためのスクリプトを実行する必要があります。 – Dev
私のゴーリー - プロセスは、PID、MEMとCPUを取得する!あなたが本当に必要とするのは2つです... '' PID MEM CPUを読む<'(ps ... | awk '... {print $ 2、$ 4、$ 3}')' –