如果它使用100%的CPU,我需要在我的进程上创建一个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 :(得分: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)}'`
看看是否有帮助。