linux下监控某一个进程在干什么事儿

1.使用ps查询对应进程的进程号,以Java为例:ps -ef | grep java

2.使用gdb工具查询,前提是gdb工具已经安装:gdb  --version查询版本号

3.使用命令 gdb -ex "set pagination 0" -ex "thread apply all bt" --batch -p [ 进程ID or 线程ID ] 打印出进程或线程信息,需要看懂源码

# -p  : 指定attach到哪个进程或者线程中 # --batch : 使用批处理模式,在所有的命令执行完成后退出,正确返回0,错误为 非0    # --ex : 执行后面跟着的GDB命令 # set paginagtion 0: 不使用分页输出                                                                                      # thread apply all bt : bt是backtrace的简写,即对所有线程使用backtrace命令,                                                                          #  bracktrace命令会产生一张表,包含当前的函数调用等信息
 

4.编写一个bash脚本,脚本内容如下,并授权执行权限,vim   gdb_pidquery_bash.sh

#!/bin/bash

gdb -ex "set pagination 0" -ex "thread apply all bt" --batch -p $1  # $1 b表示该脚本的第一个参数

5.bash脚本执行 ./gdb_tid_print.sh 2495 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值