2011-10-30 123 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错误,或因为当我运行它时,它说:

/home/private_user/servers/server/21337:没有这样的文件或 目录。

回答

0

top对齐字段,所以您可能会得到结果,其中awk($ 1)中的第一条记录是空字符串。我会改变

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

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)}'` 

,看看有没有什么帮助。

+0

没有帮助//对延迟抱歉。 – Cyclone

+0

当您手动运行'gdb服务器$ ID --cd/home/private_user/servers'时是否工作?我原以为它会是'gdb server $ ID -cd/proc /'(单个连字符而不是双精度)。 – flesk