40 lines
1.5 KiB
Bash
Executable File
40 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# script that creates an archive in current folder
|
|
# containing the heap and thread dump and the current log file
|
|
|
|
JAVA_HEAPDUMP_PATH="/tmp/java_*.hprof"
|
|
STAMP=`date +%Y-%m-%d-%H%M`
|
|
PID_PATH="/var/run/jicofo.pid"
|
|
JICOFO_UID=`id -u jicofo`
|
|
RUNNING=""
|
|
unset PID
|
|
|
|
#Find any crashes in /var/crash from our user in the past 20 minutes, if they exist
|
|
CRASH_FILES=$(find /var/crash -name '*.crash' -uid $JICOFO_UID -mmin -20 -type f)
|
|
|
|
[ -e $PID_PATH ] && PID=$(cat $PID_PATH)
|
|
if [ ! -z $PID ]; then
|
|
ps -p $PID | grep -q java
|
|
[ $? -eq 0 ] && RUNNING="true"
|
|
fi
|
|
if [ ! -z $RUNNING ]; then
|
|
echo "Jicofo pid $PID"
|
|
THREADS_FILE="/tmp/stack-${STAMP}-${PID}.threads"
|
|
HEAP_FILE="/tmp/heap-${STAMP}-${PID}.bin"
|
|
sudo -u jicofo jstack ${PID} > ${THREADS_FILE}
|
|
sudo -u jicofo jmap -dump:live,format=b,file=${HEAP_FILE} ${PID}
|
|
tar zcvf jicofo-dumps-${STAMP}-${PID}.tgz ${THREADS_FILE} ${HEAP_FILE} ${CRASH_FILES} /var/log/jitsi/jicofo* /tmp/hs_err_*
|
|
rm ${HEAP_FILE} ${THREADS_FILE}
|
|
else
|
|
ls $JAVA_HEAPDUMP_PATH >/dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
echo "Jicofo not running, but previous heap dump found."
|
|
tar zcvf jicofo-dumps-${STAMP}-crash.tgz $JAVA_HEAPDUMP_PATH ${CRASH_FILES} /var/log/jitsi/jicofo* /tmp/hs_err_*
|
|
rm ${JAVA_HEAPDUMP_PATH}
|
|
else
|
|
echo "Jicofo not running, no previous dump found. Including logs only."
|
|
tar zcvf jicofo-dumps-${STAMP}-crash.tgz ${CRASH_FILES} /var/log/jitsi/jicofo* /tmp/hs_err_*
|
|
fi
|
|
fi
|