介绍
今天介绍的几个命令主要是追踪进程执行状态用的,在平时工作中经常遇到进程卡住的情况,导致后续任务失败,如果当前现场得以保留,我们可以用这三个命令来完成对问题根因的查找以及处理。
pstree
pstree命令主要以树状图的形式展现进程间的调用关系,通过ps获取到进程的进程id后传入pstree进行进程查看,官方介绍如下:
pstree shows running processes as a tree. The tree is rooted at either pid or init if pid is omitted.
If a user name is specified, all process trees rooted at processes owned by that user are shown.
以下为各选项的说明文档:
1 | pstree: invalid option -- '-' |
pstack
pstack跟pstree不太一样,pstree主要看进程间的调用关系,pstack主要是查看进程函数堆栈,核心实现是使用了gdb以及threadapply all bt 命令
一般用法为直接加pid,如下
pstack
命令结果如下:
1 | pstack 4551 |
strace
strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间
如下为strace的参数定义
1 | strace: invalid option -- '-' |
已经有很多文章对这个进行了详细的介绍,这里就不重复造轮子了,具体了解可以看如下链接:
总结
今天了解到的命令都是进程追踪的命令,当我们遇到进程出现问题需要追踪调试的时候可以使用。