尝试将 sigquit 输出从 Tomcat 发送到单独的文件 - 文件已创建但为空?
Trying to send sigquit output from Tomcat to a seperate file - file creates but is empty?
我正在尝试使用以下方法将 kill -3 PID 的输出传输到另一个文件:
kill -3 PID > /var/log/tomcat/ThreadDump
但是它似乎只是在创建一个空文件,我不知道为什么?
当我执行一个简单的 kill -3 PID 时,它会正确输出到 catalina.out,但是我不知道如何正确地将输出发送到另一个位置..
非常感谢任何建议。
我刚刚用 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,但对我们来说效果很好。希望这对某人有所帮助。
我正在尝试使用以下方法将 kill -3 PID 的输出传输到另一个文件:
kill -3 PID > /var/log/tomcat/ThreadDump
但是它似乎只是在创建一个空文件,我不知道为什么? 当我执行一个简单的 kill -3 PID 时,它会正确输出到 catalina.out,但是我不知道如何正确地将输出发送到另一个位置..
非常感谢任何建议。
我刚刚用 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,但对我们来说效果很好。希望这对某人有所帮助。