玖叶教程网

前端编程开发入门

pstack分析脚本--定位程序当前的阻塞位置+死锁排查

概述

今天主要推荐一个实用脚本,适合观察进程堆栈,下面一起来看看吧!


脚本内容

#!/bin/bash 
if (( $# < 1 )) 
then 
 echo "usage: `basename $0` pid" 1>&2 
 exit 1 
fi
if [[ ! -r /proc/$1 ]] 
then 
 echo "Process $1 not found." 1>&2 
 exit 1 
fi
backtrace="bt" 
if [[ -d /proc/$1/task ]] 
then 
 if [[ `ls /proc/$1/task 2>/dev/null | wc -l` > 1 ]] 
 then 
 backtrace="thread apply all bt" 
 fi ; 
elif [[ -f /proc/$1/maps ]] 
then 
 if grep -e libpthread /proc/$1/maps > /dev/null 2>&1 
 then 
 backtrace="thread apply all bt" 
 fi 
fi
GDB=gdb
$GDB -quiet -nx /proc/$1/exe -p $1 <<<"$backtrace" | sed -n -e 's/^(gdb) //' -e '/^#/p' -e '/^Thread/p'

测试脚本

用法:pstack.sh 进程PID


pstack其实是gdb的一个功能封装, 但其实现的功能, 确实非常实用。建议大家重点掌握。

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

如果你觉得这篇文章对你有帮助, 请小小打赏下.

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言