概述
今天主要推荐一个实用脚本,适合观察进程堆栈,下面一起来看看吧!
脚本内容
#!/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方面的内容,感兴趣的朋友可以关注下~
如果你觉得这篇文章对你有帮助, 请小小打赏下.