2011-10-30 12 views
0

100%のCPUを使用している場合は、プロセスにgdbログを作成する必要があります。ここでgdbログファイルを作成する

私はbashで書かれた時点でしまった私のスクリプトです:

#!/bin/bash 

ID=`top -n 1 | grep server | awk '{print $1}'` 
CPU_PERCENT=`top -n 1 | grep server | awk '{print $9}'` 
GDB_m = `gdb server $ID --cd /home/rox/rl` 

echo "Checking CPU..." 

if [ $CPU_PERCENT -eq 100 ] 
then 
echo "CPU 100%, running the script, for the process with ID: $ID" 
while true 
do 
    gdb server $ID --cd /home/private_user/servers 
    echo "bt full" >> $GDB_m 
    echo "exit" >> $GDB_m 
    echo "y" >> $GDB_m 
    echo "Sleeping for 60 seconds..." 
    sleep 60 
done 
else 
echo "CPU $CPU_PERCENT %, its fine!" 
sleep 1 
fi 

これは私が書いた、そしてそれは、ログか何かを保存していない、そこ$IDとの誤差がある、または何か、私はそれを実行しているとき、そのが言っているので:

/ホーム/ private_user /サーバー/サーバー/ 21337:そのようなファイルやディレクトリ はありません。

答えて

0

topはフィールドを整列させるので、awk($ 1)の最初のレコードが空の文字列である結果に終わることがあります。私は

ID=`top -n 1 | grep server | awk '{print (NF>13 ? $2 : $1)}'` 
CPU_PERCENT=`top -n 1 | grep server | awk '{print (NF>13 ? $10 : $9)}'` 

ID=`top -n 1 | grep server | awk '{print $1}'` 
CPU_PERCENT=`top -n 1 | grep server | awk '{print $9}'` 

を変更し、それは場合に役立ちます参照してくださいね。

+0

遅れて申し訳ありません。 – Cyclone

+0

'gdb server $ ID --cd/home/private_user/servers'は手動で実行すると動作しますか?私は 'gdb server $ ID -cd/proc /'(ダブルの代わりにシングルハイフン)と思っていたでしょう。 – flesk

関連する問題