Created
June 4, 2020 11:16
-
-
Save valtoni/8bc14f2d0e3aaf66fe73a1020581dd67 to your computer and use it in GitHub Desktop.
Full dump of program in jdk
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| LOCAL_DIR=~/ | |
| PROGRAM_NAME=my-jar-exe | |
| HOST=$(hostname | cut -d "." -f 1) | |
| PROGRAM_PIDS=$(jps -v | grep $PROGRAM_NAME | cut -d " " -f 1) | |
| function insert_sqlite { | |
| FILE=$2 | |
| DATE=$3 | |
| PID=$4 | |
| ENVIROMENT=$5 | |
| TYPE=$1 | |
| CONTENT=$(cat $FILE) | |
| DB_SQLITE=$LOCAL_DIR/dump.db | |
| if [ ! -f $DB_SQLITE ]; then | |
| sqlite3 $DB_SQLITE "CREATE TABLE DUMP (id integer primary key autoincrement, date TIMESTAMP, host text, pid int, env text, type text, output text)" | |
| fi | |
| # Scape special chars | |
| #CONTENT=${CONTENT/\'/\\\'} | |
| #CONTENT=${CONTENT/\"/\\\"} | |
| sqlite3 $DB_SQLITE "INSERT INTO DUMP (date, host, pid, env, type, output) VALUES ('$DATE', '$HOST', '$PID', '$ENVIROMENT', '$TYPE', '$CONTENT')" | |
| } | |
| for PROGRAM_PID in $PROGRAM_PIDS; do | |
| # Create one file per PID | |
| TIMESTAMP=$(date +"%Y%m%d_%H%M%S") | |
| DB_DATE=$(date +"%Y-%m-%d %H:%M:%S") | |
| # You can do a ENVIRONMENT thing here | |
| # Do it if you want | |
| THREAD_FILE_DUMP=${LOCAL_DIR}/${HOST}_${PROGRAM_PID}_${ENVIRONMENT}_${TIMESTAMP} | |
| THREAD_FILE_DUMP_JSTACK=${THREAD_FILE_DUMP}_jstack | |
| THREAD_FILE_DUMP_THREADS=${THREAD_FILE_DUMP}_ps | |
| THREAD_FILE_DUMP_CLASSES=${THREAD_FILE_DUMP}_classes | |
| THREAD_FILE_DUMP_GC=${THREAD_FILE_DUMP}_gc | |
| # Thread Stack dump | |
| echo "----------------------------------------" >> $THREAD_FILE_DUMP_JSTACK | |
| echo "Thread Stack Dump" >> $THREAD_FILE_DUMP_JSTACK | |
| echo "----------------------------------------" >> $THREAD_FILE_DUMP_JSTACK | |
| jstack -l $PROGRAM_PID >> $THREAD_FILE_DUMP_JSTACK | |
| insert_sqlite jstack $THREAD_FILE_DUMP_JSTACK "$DB_DATE" $PROGRAM_PID $ENVIRONMENT | |
| # System thread dump | |
| echo "----------------------------------------" >> $THREAD_FILE_DUMP_THREADS | |
| echo "System Stack Dump" >> $THREAD_FILE_DUMP_THREADS | |
| echo "----------------------------------------" >> $THREAD_FILE_DUMP_THREADS | |
| echo "Threads active: $(ps -w -T $PROGRAM_PID | wc -l)" >> $THREAD_FILE_DUMP_THREADS | |
| insert_sqlite threads $THREAD_FILE_DUMP_THREADS "$DB_DATE" $PROGRAM_PID $ENVIRONMENT | |
| # Loaded classes | |
| echo "----------------------------------------" >> $THREAD_FILE_DUMP_CLASSES | |
| echo "Stats of Loaded classes" >> $THREAD_FILE_DUMP_CLASSES | |
| echo "----------------------------------------" >> $THREAD_FILE_DUMP_CLASSES | |
| jstat -class $PROGRAM_PID 1 1 >> $THREAD_FILE_DUMP_CLASSES | |
| insert_sqlite classes $THREAD_FILE_DUMP_CLASSES "$DB_DATE" $PROGRAM_PID $ENVIRONMENT | |
| # Garbage collection | |
| echo "----------------------------------------" >> $THREAD_FILE_DUMP_GC | |
| echo "Stats of Garbage Collection" >> $THREAD_FILE_DUMP_GC | |
| echo "----------------------------------------" >> $THREAD_FILE_DUMP_GC | |
| jstat -gc $PROGRAM_PID 1 1 >> $THREAD_FILE_DUMP_GC | |
| insert_sqlite gc $THREAD_FILE_DUMP_GC "$DB_DATE" $PROGRAM_PID $ENVIRONMENT | |
| done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment