unix脚本用于收集进程的线程转储日志

时间:2012-05-14 06:30:10

标签: linux bash thread-dump jstack

我正在尝试生成有关HashMap.put函数的问题。我编写了一个测试代码,它将运行超过100个线程..通过使用jstack或kill我能够获得特定线程的线程转储我的进程..问题是我无法立即捕获线程转储,我希望所有的线程转储都记录在文件中,直到进程结束。是否有任何linux命令或shell脚本可以写入来执行此操作?

1 个答案:

答案 0 :(得分:1)

#!/bin/bash

if [ $# -eq 0 ]; then
    echo >&2 "Usage: jstackSeries  [ <count> [ <delay> ] ]"
    echo >&2 "    Defaults: count = 10, delay = 1 (seconds)"
    exit 1
fi

pid=$1          # required
count=${2:-10}  # defaults to 10 times
delay=${3:-1} # defaults to 1 second

while [ $count -gt 0 ]
do
    jstack $pid >jstack.$pid.$(date +%H%M%S.%N)
    sleep $delay
    let count--
    echo -n "."
done

请参考:

http://howtodoinjava.com/2012/12/19/how-to-get-thread-dump-in-linux-using-jstack/