linux pstack命令总结
2016-03-07 11:50
597 查看
pstack命令用来显示进程的栈跟踪。pstack命令必须由相应进程的属主或root账号运行。可以使用pstack来确定进程挂起的位置。此命令只有一个参数,那就是pid,具体关于pstack的介绍可以查看man手册,如下所示:
例如我们可以使用pstack命令来查看Oracle监听进程的栈跟踪,如下所示
1:首先找到监听进程的进程号
2:将监听进程的栈跟踪信息写入文件lsn_pstack.log
3:如下所示,我们可以看到函数调用关系为:main->nsglma->nsevwait->ntevque->ntevpque->poll.
[root@DB-Server~]#manpstack
PSTACK(1)LinuxProgrammer’sManualPSTACK(1)
NAME
pstack-printastacktraceofarunningprocess
SYNOPSIS
pstackpid
DESCRIPTION
pstackattachestotheactiveprocessnamedbythepidonthecommandline,andprintsoutanexecutionstacktrace.IfELFsymbolsexistinthebinary(usuallythecase
unlessyouhaverunstrip(1)),thensymbolicaddressesareprintedaswell.
Iftheprocessispartofathreadgroup,thenpstackwillprintoutastacktraceforeachofthethreadsinthegroup.
SEEALSO
nm(1),ptrace(2),gdb(1)
AUTHORS
RossThompson<ross@whatsis.com>
RedHat,Inc.<http://bugzilla.redhat.com/bugzilla>
RedHatLinuxDec172004PSTACK(1)
(END)
例如我们可以使用pstack命令来查看Oracle监听进程的栈跟踪,如下所示
1:首先找到监听进程的进程号
[oracle@DB-Server~]$ps-ef|greplsn
oracle1202711806011:18pts/100:00:00greplsn
oracle3144010Mar04?00:01:41/u01/app/oracle/product/10.2.0/db_1/bin/tnslsnrLISTENER-inherit
2:将监听进程的栈跟踪信息写入文件lsn_pstack.log
[oracle@DB-Server~]$pstack31440>>lsn_pstack.log
[oracle@DB-Server~]$pstack31440>>lsn_pstack.log
[oracle@DB-Server~]$pstack31440>>lsn_pstack.log
[oracle@DB-Server~]$
3:如下所示,我们可以看到函数调用关系为:main->nsglma->nsevwait->ntevque->ntevpque->poll.
[oracle@DB-Server~]$morelsn_pstack.log
#00x0000003c7d0cb65finpoll()from/lib64/libc.so.6
#10x00007f82c63292e7inntevpque()from/u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#20x00007f82c6326aabinntevque()from/u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#30x00007f82c62fc81einnsevwait()from/u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#40x00000000004108d9innsglma()
#50x0000000000405abdinmain()
#00x0000003c7d0cb65finpoll()from/lib64/libc.so.6
#10x00007f82c63292e7inntevpque()from/u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#20x00007f82c6326aabinntevque()from/u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#30x00007f82c62fc81einnsevwait()from/u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#40x00000000004108d9innsglma()
#50x0000000000405abdinmain()
#00x0000003c7d0cb65finpoll()from/lib64/libc.so.6
#10x00007f82c63292e7inntevpque()from/u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#20x00007f82c6326aabinntevque()from/u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#30x00007f82c62fc81einnsevwait()from/u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#40x00000000004108d9innsglma()
#50x0000000000405abdinmain()
[oracle@DB-Server~]$
相关文章推荐
- 备忘:win10下共享(samba)给CentOS-6
- Linux音视频(流媒体)
- 静态库&&动态库
- Hadoop-CentOS精简版搭建Hadoop集群
- ARM Linux内核Input输入子系统浅解
- linux中禁用Ctrl+Alt+Delete的配置方法
- Linux命令行日常系快捷键
- Linux中安装jdk的配置环境
- 修改linux系统打开文件数限制
- Linux文件编辑器 Vi(Vim)
- Linux基础知识题解答(六)
- Linux系统调优和磁盘读写测试
- 加大Linux服务器的文件描述符
- Linux学习之touch命令
- Linux用户管理、新建用户、用户分组,分配权限等
- linux的shadow文件
- Linux折腾之旅之linux mint 17.2
- linux下kill命令小结
- CentOS6.4_x86_开关机查看
- 笔记:Linux常用命令(八)用户和用户组