Linux pstack命令详解

Linux pstack命令详解教程

Linux 中的 pstack 是一个 shell 脚本,用于打印正在运行的进程的栈跟踪信息,它实际上是 gstack 的一个链接,而 gstack 本身是基于 gdb 封装的 shell 脚本。此命令可显示每个进程的栈跟踪。

pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。

Linux pstack命令详解

功能

与 jstack 功相比,它能对潜在的死锁予以提示,而 pstack 只提供了线索,需要 gdb 进一步的确定。pstack 是gdb 的一部分,如果系统没有 pstack 命令,使用 yum 搜索安装 gdb 即可。

这个命令在排查进程问题时非常有用,比如我们发现一个服务一直处于 work 状态(如假死状态,好似死循环),使用这个命令就能轻松定位问题所在;可以在一段时间内,多执行几次 pstack,若发现代码栈总是停在同一个位置,那个位置就需要重点关注,很可能就是出问题的地方。

语法

pstack pid

参数

参数 描述
pid 进程的 pid。

Linux pstack命令常用实例

实例

实例 描述
pstack pid 查看进程号为 pid 的进程的堆栈信息。

查看进程堆栈

语法

pstack pid

案例

我们首先,运行 top 命令,接着,我们使用 pidof 命令查看 top 命令的进程 id,具体命令如下:

pidof top

运行后,终端输出如下:

88_Linux pstack命令详解.png

我们看到,此时输出了 top 程序的进程 id,现在,我们使用 pstack 命令,查看 top 命令的堆栈信息,具体命令如下:

pstack 3786

运行后,终端输出如下:

89_Linux pstack命令详解.png

我们看到,此时输出了进程的信息。

Linux pstack命令详解总结

Linux 中的 pstack 是一个 shell 脚本,用于打印正在运行的进程的栈跟踪信息,它实际上是 gstack 的一个链接,而 gstack 本身是基于 gdb 封装的 shell 脚本。此命令可显示每个进程的栈跟踪。