尝试将Tomcat的sigquit输出发送到单独的文件 - 文件创建但是为空?

时间:2017-05-11 10:43:31

标签: tomcat kill thread-dump

我尝试使用以下方法将kill -3 PID的输出传输到另一个文件:

kill -3 PID> / var / log / tomcat / ThreadDump

然而,它似乎只是创建一个空文件,我不知道为什么? 当我执行一个简单的 kill -3 PID 时,它正确地输出到catalina.out,但是我无法确定如何将输出真正地发送到另一个位置..

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我刚刚使用kill -3进行了粗略的修改。它的大致轮廓是:

#! /bin/bash

TOMCAT_PID=`cat /opt/tomcat/work/tomcat.pid`
LOG_FILE=/opt/tomcat/logs/catalina.out
NOWISH=`date +"%Y-%M-%d-%T"`
THREAD_DUMP_FILE=/var/mycompany/threaddumps/threaddump-$NOWISH.txt

# get current line count of catalina.out
CURRENT_LINES=`wc -l $LOG_FILE`

# perform the kill
kill -3 $TOMCAT_PID

# wait until we have 'Heap' mentioned in catalina.out _after_ the old line count
while [[ `tail -n+$CURRENT_LINES $LOG_FILE | grep 'Heap' | wc -l` == 0 && $ATTEMPTS != 10 ]]
do
        sleep 1
        ATTEMPTS=$((ATTEMPTS+1))
done

# tail catalina.out to get everything after the old line count into a separate file
tail -n+$CURRENT_LINES $LOG_FILE > $THREAD_DUMP_FILE

这显然是一个hack,但是对我们来说足够好了。希望这对某人有帮助。