Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试将来自Tomcat的sigquit输出发送到单独的文件-文件创建但为空?_Tomcat_Kill_Thread Dump - Fatal编程技术网

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

尝试将来自Tomcat的sigquit输出发送到单独的文件-文件创建但为空?,tomcat,kill,thread-dump,Tomcat,Kill,Thread Dump,我正在尝试使用以下命令将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/to

我正在尝试使用以下命令将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

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

我刚刚用
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

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

如果kill命令成功,kill命令不会打印任何输出(至少在我的Linux机器上不会)。因此,假设kill命令在您的案例中成功,这将解释零长度文件。注意:如果kill命令失败(例如“没有这样的进程”),它将在stderr而不是stdout上打印错误文本。要捕获stdout和stderr,您需要这样做:kill-3pid>/var/log/tomcat/ThreadDump 2>&1如果kill命令成功,kill命令不会打印任何输出(至少在我的Linux机器上不会)。因此,假设kill命令在您的案例中成功,这将解释零长度文件。注意:如果kill命令失败(例如“没有这样的进程”),它将在stderr而不是stdout上打印错误文本。要捕获stdout和stderr,需要执行以下操作:kill-3pid>/var/log/tomcat/ThreadDump 2>&1