Linux 中的 pstack 是一个 shell 脚本,用于打印正在运行的进程的栈跟踪信息,它实际上是 gstack
的一个链接,而 gstack 本身是基于 gdb 封装的 shell 脚本。此命令可显示每个进程的栈跟踪。
pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。
与 jstack 功相比,它能对潜在的死锁予以提示,而 pstack 只提供了线索,需要 gdb 进一步的确定。pstack
是gdb 的一部分,如果系统没有 pstack 命令,使用 yum 搜索安装 gdb
即可。
这个命令在排查进程问题时非常有用,比如我们发现一个服务一直处于 work 状态(如假死状态,好似死循环),使用这个命令就能轻松定位问题所在;可以在一段时间内,多执行几次 pstack,若发现代码栈总是停在同一个位置,那个位置就需要重点关注,很可能就是出问题的地方。
pstack pid
参数 | 描述 |
---|---|
pid | 进程的 pid。 |
实例 | 描述 |
---|---|
pstack pid | 查看进程号为 pid 的进程的堆栈信息。 |
pstack pid
我们首先,运行 top 命令,接着,我们使用 pidof 命令查看 top 命令的进程 id,具体命令如下:
pidof top
运行后,终端输出如下:
我们看到,此时输出了 top 程序的进程 id,现在,我们使用 pstack 命令,查看 top 命令的堆栈信息,具体命令如下:
pstack 3786
运行后,终端输出如下:
我们看到,此时输出了进程的信息。
Linux 中的 pstack 是一个 shell 脚本,用于打印正在运行的进程的栈跟踪信息,它实际上是 gstack
的一个链接,而 gstack 本身是基于 gdb 封装的 shell 脚本。此命令可显示每个进程的栈跟踪。