Linux 下的 pstack 工具安装及简单应用
作者 | JiekeXu
来源 | JiekeXu之路(ID: JiekeXu_IT)
转载请联系授权 | (微信ID:xxq1426321293)
大家好,我是 JiekeXu,很高兴又和大家见面了,今天分享下 Linux 下的 pstack 工具安装及简单应用。本文首发于微信公众号【JiekeXu之路】,欢迎点击上方蓝字关注我吧!
原本想着使用 pstack 命令监控一下监听日志可没想到,Linux 系统默认没有这个命令。RedHat 公司发行的 Linux 操作系统(RHEL,CentOS等等)虽提供了 pstack 工具,但要安装 gdb。
安装 gdb 会自带安装 pstack ,那先不管了,配置好本地 yum 源试试吧。
yum install gdb -y
查看 pstack 是指向了 gstack 的符号链接。再看一下 gstack:
[root@JiekeXu ~]# cat /usr/bin/gstack
#!/bin/shif test $# -ne 1; thenecho "Usage: `basename $0 .sh` <process-id>" 1>&2exit 1
fiif test ! -r /proc/$1; thenecho "Process $1 not found." 1>&2exit 1
fi# GDB doesn't allow "thread apply all bt" when the process isn't
# threaded; need to peek at the process to determine if that or the
# simpler "bt" should be used.backtrace="bt"
if test -d /proc/$1/task ; then# Newer kernel; has a task/ directory.if test `/bin/ls /proc/$1/task | /usr/bin/wc -l` -gt 1 2>/dev/null ; thenbacktrace="thread apply all bt"fi
elif test -f /proc/$1/maps ; then# Older kernel; go by it loading libpthread.if /bin/grep -e libpthread /proc/$1/maps > /dev/null 2>&1 ; thenbacktrace="thread apply all bt"fi
fiGDB=${GDB:-/usr/bin/gdb}# Run GDB, strip out unwanted noise.
# --readnever is no longer used since .gdb_index is now in use.
$GDB --quiet -nx $GDBARGS /proc/$1/exe $1 <<EOF 2>&1 |
set width 0
set height 0
set pagination no
$backtrace
EOF
/bin/sed -n \-e 's/^\((gdb) \)*//' \-e '/^#/p' \-e '/^Thread/p'
脚本要求一个参数:进程 ID。
然后通过检测 /proc 目录下进程子目录是否可读,来查看相应进程是否存在。
如果进程只有一个线程,那么使用 gdb 的 “bt” 命令打印线程堆栈信息,否则使用 “thread apply all bt” 命令。
最后调用 gdb,使用 “bt” 或 “thread apply all bt” 命令,并把输出重定向到 sed 工具,由 sed 工具打印出线程堆栈信息。
下面我们使用 pstack 跟踪一下 监听日志进程。
最后也使用操作系统跟踪命令跟踪 sqlplus 连接过程,从而观察跟踪文件。要是没有 strace 也需要安装一下。
yum install -y strace
Linux 系统的跟踪命令:
strace -o /tmp/sqlplus.log -T -tt -e trace=all sqlplus / as sysdba
然后使用 tkprof 格式化一下 strace 文件,便可以看到一些有用的信息,我这里没有问题,故格式化后输出也很简单。
tkprof 文件名 -output 文件名
cat 文件名
当然也可以使用 strace 加进程 pid 输出堆栈信息,不过就是不太友好,不容易看懂。
strace -t -p 31706
注意:HPUnix、AIX 跟踪 sqlplus 进程使用如下命令:
truss -dfaie -o /tmp/truss.log sqlplus / as sysdba
以前也使用 truss 命令解决过一登陆缓慢问题:SQLPLus 登陆 RAC 11.2.0.4 数据库缓慢问题完美解决方案,感兴趣的小伙伴可以查看。
———————————————————————————
腾讯云:https://cloud.tencent.com/developer/user/5645107
墨天轮:https://www.modb.pro/u/4347
CSDN:https://blog.csdn.net/JiekeXu
公众号:JiekeXu之路
————————————————————————————
好了,今天就先到这里了,小伙伴们再见了。写作不易,此文如果对你有帮助,请支持“在看”与转发,您的支持便是我不断写作的最大的动力,实在吝啬点个赞也行哈,微信公众号以前的点赞又回来了,加油,让我们一起努力做更好的自己!
Oracle 12c 及以上版本补丁更新说明及下载方法(收藏版)
Oracle 19c 之多租户 PDB 连接与访问(三)
Oracle 12C 最新补丁下载与安装操作指北
关于 Oracle ACFS 相关知识的简单学习
Oracle 相关认证证书查询及真伪辨别
点亮在看,你最好看!
Linux 下的 pstack 工具安装及简单应用相关推荐
- linux下mysql可视化工具安装
之前是一直用shell交互界面,但是最近频繁地检查数据库中的数据感觉特别麻烦,便装了一个可视化工具. 安装: $ sudo apt-get install mysql-workbench [sudo] ...
- Linux下RocketMq可视化工具安装
1.下载可视化工具包 下载地址:GitHub - apache/rocketmq-externals: Mirror of Apache RocketMQ (Incubating) 2.将下载的工具包 ...
- Linux下的parted工具的使用 GPT分区安装系统
安装系统是安装前时候ctrl+atl+F2 fdisk -l parted select /dev/sdb mklabel msdos # 将GPT磁盘格式化为MBR磁盘 对大硬盘进行分区 xfs 和 ...
- Linux下开源打包工具fpm的安装与使用(超详细)
Linux下开源打包工具fpm的安装与使用 一.fpm概述 二.fpm的安装 1.安装ruby环境 2.安装fpm 三.fpm的使用 1.fpm常用参数 2.举例要求 3.准备目录 4.编写脚本文件 ...
- Linux下C++开发工具介绍
概述 就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, an ...
- Linux下暴力破解工具Hydra详解
Linux下暴力破解工具Hydra详解 一.简介 Number one of the biggest security holes are passwords, as every password s ...
- linux下python3源码安装及卸载
Linux下Python3的源码编译安装和卸载方法 [日期:2019-06-21] 来源:博客园 作者:wuli潇萧 [字体:大 中 小] (一)Linux下软件的源码编译安装和卸载方法 Linux ...
- arm linux下交叉编译valgrind工具进行内存泄露检测和性能分析
C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.如果crash的地方正是内存使用错误的地方,说明你人品好.如果crash的地方内存明显不是consistent的 ...
- python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))
Python介绍. Unix & Linux & Window & Mac 平台安装更新 Python3 及VSCode下Python环境配置配置 python基础知识及数据分 ...
最新文章
- Docker是世界上最牛逼的CaaS!
- (2)搞一搞 seata 之 Spring Cloud 整合
- win7 64+python2.7.12安装numpy+scipy+matplotlib+scikit-learn
- 3月19 HTML静态网页的制作
- Sueetie源代码发布【 推荐 】
- 亲身经历:如何判断一个字符在a/z之前?
- ai驱动数据安全治理_利用AI驱动的自动协调器实时停止有毒信息
- 【知识图谱系列】基于Randomly Perturb的图谱预训练模型GraphCL
- 利用Gazebo搭建赛道,控制小车完成比赛(大学生智能车大赛室外光电组赛道仿真模拟)
- word整个表格首行缩进_word表格怎么首行缩进 word表格内容缩进
- Latex VS Code 编辑中文Latex乱码——详细解决方案操作流程
- 摇篮式五轴与主轴摆动式五轴加工中心的区别
- element-ui表格表头内容 限制不换行
- 7-154 置点不动产——认真学习,努力工作买买房子吧
- xz2p更新android 9,索尼 XZ2 迎来安卓 9.0 更新,但少了全面屏手势
- 教你用人工智能写文章写歌词写对联
- 同花顺l2数据接口到底有什么用?
- Android来电铃声默认设置的实现方法与如何设置语音来电的默认铃声
- 北京大兴区强关私立幼儿园 致数千儿童无学可上
- 小红年龄是小梅的5倍c语言,5.四年级奥数-年龄问题.doc