dump查詢Java 狀態

代碼文件 dump.sh

#!/usr/bin/env bash### use demo ###
# 1)upload dump.sh
# 2)dos2unix dump.sh;chmod +x dump.sh
# 3)usage:?
#?? ?1. /data/sh/java/dump.sh /tmp/dump /usr/local/java/jdk1.8.0_05 23554
#?? ?2. /data/sh/java/dump.sh /tmp/dump /usr/local/java/jdk1.8.0_05 23554 -F### parameter description ###
# 1 ./tmp/dump is save dump file dir.?
# 2 /usr/local/java/jdk1.8.0_05 is java_home.?
# 3 23554 is java-pid.?
# 4 -F force jvm dum, optional.declare SNAPSHOT_BASE_DIRECTORY=$1
declare JAVA_HOME=$2
declare PID=$3
declare JVM_FORCE_OPTS=$4# remove the last '/' char
JAVA_HOME=${JAVA_HOME/%\//}
SNAPSHOT_BASE_DIRECTORY=${SNAPSHOT_BASE_DIRECTORY/%\//}declare FULL_TIME_FORMAT="+%Y-%m-%d_%H_%M_%S_%N"
declare SHORT_TIME_FORMAT="+%H-%M-%S-%N"
declare TIMESTAMP=`date ""${FULL_TIME_FORMAT}"" `
declare RESULT_DIRECTORY=${SNAPSHOT_BASE_DIRECTORY}/${PID}/${TIMESTAMP}
declare RUN_LOG_PATH="${RESULT_DIRECTORY}/run.log"run_log(){declare log_msg="$(date ""${FULL_TIME_FORMAT}""): $1"echo ${log_msg}echo ${log_msg} >>${RUN_LOG_PATH}
}is_no_null(){if [ -z $1 ];thenreturn 0;elsereturn 1;fi
}is_valid_number(){is_no_null $1if [ $? -eq 0 ];thenreturn 0;fiif [ $1 -gt 0 ] 2>/dev/null ;thenreturn 1;elsereturn 0;fi
}echo_blank_line(){echo?
}valid_param(){if [ ! -d ${RESULT_DIRECTORY} ]; thenmkdir -p ${RESULT_DIRECTORY}run_log "tip: Create RESULT_DIRECTORY=${RESULT_DIRECTORY}"firun_log "tip: RESULT_DIRECTORY=${RESULT_DIRECTORY}"is_no_null ${SNAPSHOT_BASE_DIRECTORY}if [ $? -eq 0 ];thenrun_log "Param 1 SNAPSHOT_BASE_DIRECTORY is no exist and exit ,such as /tmp/dump"exit 1;elserun_log "tip: SNAPSHOT_BASE_DIRECTORY=${SNAPSHOT_BASE_DIRECTORY}"fiif [ -d "${JAVA_HOME}" ];thenrun_log "tip: JAVA HOME: ${JAVA_HOME}"elserun_log "Param2 JAVA_HOME is no exist and exit ,such as /usr/local/java/jdk1.8.0_05"exit 2;fiis_valid_number ${PID}if [ $? -eq 0 ];thenrun_log "Param3 PID is invalid and exit"exit 3;fi
}
valid_param
run_log "RESULT_DIRECTORY=${RESULT_DIRECTORY}"machine_dump(){declare filename=$1;type $1 >/dev/null 2>&1 && {run_log "Start $1 $2 dump"declare timestamp=$(date ""${SHORT_TIME_FORMAT}"");run_log "Execute $1 $2 >> ${RESULT_DIRECTORY}/machine_${filename}_${timestamp}.dump"$1 $2 >> ${RESULT_DIRECTORY}/machine_${filename}_${timestamp}.dumprun_log "End $1 $2 dump"echo_blank_line}
}machine_dump_pipeline(){declare filename=$1;type $2 >/dev/null 2>&1 && {run_log "Start $2 $3 | $4 dump"declare timestamp=$(date ""${SHORT_TIME_FORMAT}"");run_log "Execute $2 $3 | $4 >> ${RESULT_DIRECTORY}/machine_${filename}_${timestamp}.dump"$2 $3 | $4 >> ${RESULT_DIRECTORY}/machine_${filename}_${timestamp}.dumprun_log "End $2 $3 | $4 dump"echo_blank_line}
}# 3 times interval 1s
declare machine_static_frequency="1 3"# machine real time statistics information
echo_blank_line
machine_dump_pipeline "top-50-process" top "-b" "head -n 50"?
machine_dump free -glt
machine_dump vmstat "-t ${machine_static_frequency}"
machine_dump mpstat "-A ${machine_static_frequency}"
machine_dump iostat "${machine_static_frequency}"
machine_dump iotop "-o -b -n 3"
machine_dump netstat "-an"
machine_dump lsof "-p ${PID}"
# machine history statistics information
machine_dump sar -Aget_pid_user(){user_tip=`ps u -p $1 | tail -n 1 | awk '{print $1}'`is_valid_number ${user_tip}if [ $? -eq 0 ];thenecho ${user_tip}elseecho `cat /etc/passwd |grep x:${user_tip} | awk -F ':' '{print $1}'`fi
}PID_USER=`get_pid_user ${PID}`jvm_dump(){declare filename;if [ ! -z $3 ];thenfilename=$3elsefilename=$1firun_log "Start $1 $2 dump"declare timestamp=$(date ""${SHORT_TIME_FORMAT}"");run_log "su -l ${PID_USER} -s /bin/bash -c \"${JAVA_HOME}/bin/$1 $2 \" >> ?${RESULT_DIRECTORY}/jvm_${filename}_${timestamp}.dump"su -l ${PID_USER} -s /bin/bash -c "${JAVA_HOME}/bin/$1 $2 " >> ${RESULT_DIRECTORY}/jvm_${filename}_${timestamp}.dumprun_log "End $1 $2 dump"echo_blank_line
}# 8 times interval 1s
declare jvm_static_frequency="1000 8"
# jvm real time statistics information
jvm_dump jinfo "${PID}"
jvm_dump jstat "-gcutil ${PID} ${jvm_static_frequency}" "jstat-gcutil"machine_dump_pipeline "top-100-high-thread" top "-H -b -n 1 -p ?${PID}" "head -n 100"
chown ${PID_USER}:${PID_USER} ${RESULT_DIRECTORY}
# topH have must together with jstack
jvm_dump jstack "${JVM_FORCE_OPTS} ${PID}"# dump?
jvm_head_dump(){run_log "Start jmap ?$1 dump"declare timestamp=$(date ""${SHORT_TIME_FORMAT}"");run_log "su -l ${PID_USER} -s /bin/bash -c \"${JAVA_HOME}/bin/jmap ${JVM_FORCE_OPTS} -dump:format=b,file=${RESULT_DIRECTORY}/jvm_jmap_${timestamp}.hprof $1\""su -l ${PID_USER} -s /bin/bash -c "${JAVA_HOME}/bin/jmap ${JVM_FORCE_OPTS} -dump:format=b,file=${RESULT_DIRECTORY}/jvm_jmap_${timestamp}.hprof $1"?run_log "End jmap $1 dump"echo_blank_line
}
jvm_head_dump ${PID}# statistics all kinds of tcp status
cat ${RESULT_DIRECTORY}/machine_netstat*.dump | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' > ${RESULT_DIRECTORY}/machine_netstat_status_statistics.dump

調用示例:

./dump.sh /home/cmcc/temp/dump $JAVA_HOME PID

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386827.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386827.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386827.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jdk、jre、jvm區別與聯系

JVM :英文名稱(Java Virtual Machine),就是我們耳熟能詳的 Java 虛擬機。它只認識 xxx.class 這種類型的文件,它能夠將 class 文件中的字節碼指令進行識別并調用操作系統向上的 API 完成動作。所以說,jvm 是…

autoencoder自編碼器原理以及在mnist數據集上的實現

Autoencoder是常見的一種非監督學習的神經網絡。它實際由一組相對應的神經網絡組成(可以是普通的全連接層,或者是卷積層,亦或者是LSTMRNN等等,取決于項目目的),其目的是將輸入數據降維成一個低維度的潛在編…

vscode編寫插件詳細過程

vscode編寫插件詳細過程 前言 之前編寫了一個vscode插件用vscode寫博客和發布,然后有園友要求寫一篇來介紹如何開發一個vscode擴展插件,或者說介紹開發這個插件的過程。然而文章還沒有寫,園子里面已經有人發布一個文章,是園友上…

cannot find output in imported module librosa報錯解決

librosa一直都是用處很廣泛的python聲音信號處理模塊,但在最近的版本更新中,將原本的librosa.output給刪去了。 為了代替之前的librosa.output.write_wav函數將音頻寫入wav文件中,現可以用模塊soundfile代替。 soundfile.write(file, data, …

2018-2019-2 20175328 《Java程序設計》第十一周學習總結

十三章主要內容——Java網絡編程 一、URL類 URL類是java.net包中的一個重要的類,URL的實例封裝著一個統一資源定位符(Uniform Resource Locator),使用URL創建對象的應用程序稱作客戶端程序。 一個URL對象通常包含最基本的三部分信息:協議、地…

修改Header方法

/*** 修改header信息&#xff0c;key-value鍵值對兒加入到header中,如果存在&#xff0c;替換* param request* param key* param value*/ public static void reflectRequestParam(HttpServletRequest request, String key, String value){Class<? extends HttpServletReq…

pytorch學習筆記 1. pytorch基礎 tensor運算

pytorch與tensorflow是兩個近些年來使用最為廣泛的機器學習模塊。開個新坑記錄博主學習pytorch模塊的過程&#xff0c;不定期更新學習進程。 文章較為適合初學者&#xff0c;歡迎對代碼和理解指點討論&#xff0c;下面進入正題。 import torch import numpy as npt1 torch.te…

2019年區塊鏈的主旋律是中間層協議

2019年區塊鏈的主旋律是中間層協議 過去一年加密資產市場從其峰值下跌超過85%的市值。但對我&#xff0c;一個堅定的區塊鏈企業家&#xff0c;這實際上是一件好事&#xff0c;區塊鏈的未來看起來比以往任何時候都更有希望。2017年ICO熱潮開始的瘋狂至少產生了一個強烈的積極影響…

Java枚舉的內容可以使用map的方式

枚舉的內容可以使用map的方式 package com.chinamobile.framework.common.enums;import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import jav…

tensorflow gpu windows配置步驟教學

本文主要針對在windows10環境下的tensorflow配置問題&#xff0c;在linux和mac等其他環境中的配置就不過多贅述(windows總是那個問題最多的環境&#xff0c;建議使用linux &#x1f603;)。 本文中配置的環境為 python 3.8.5 tensorflow-gpu 2.4.1 1. 更新nvidia顯卡驅動至最…

numpy一維數組永遠為列向量

import numpy as np a np.array([1,3,4,5]) print(a.shape) a np.transpose(a) print(a.shape) print(a)a np.ravel(a) print(a.shape) print(a)a a.reshape((1,4)) print(a.shape)輸出如下 (4,) (4,) [1 3 4 5] (4,) [1 3 4 5] (1, 4)我們會發現&#xff0c;對于一維的數…

【BJOI 2019】奧術神杖

題意 你有一個長度為 $n$ 的模板串&#xff08;由 $0-9$ 這 $10$ 個數字和通配符 $.$ 組成&#xff09;&#xff0c;還有 $m$ 個匹配串&#xff08;只由 $0-9$ 這 $10$ 個數字組成&#xff09;&#xff0c;每個匹配串有一個魔力值 $v_i$。你要把模板串的每個 $.$ 都換成一個數字…

keras模型中的默認初始化權重

權重的初始化&#xff0c;決定了模型訓練的起點。一個良好的初始化可以加快訓練過程&#xff0c;同時避免模型收斂至局部最小值。為了在訓練過程中避免使得權重的變化總沿著同一個方向&#xff0c;我們盡量避免將所有權重都初始化為同一個值&#xff0c;如全0矩陣或全1矩陣。 …

java oracle的枚舉錯誤

public enum OracleErrorTypeEnum implements BaseEnum {ORA00001("ORA-00001","不允許有重復的數據"),ORA00017("ORA-00017","請求會話以設置跟蹤事件"),ORA00018("ORA-00018","超出最大會話數"),ORA00019(&quo…

C# 篇基礎知識10——多線程

1.線程的概念 單核CPU的計算機中&#xff0c;一個時刻只能執行一條指令&#xff0c;操作系統以“時間片輪轉”的方式實現多個程序“同時”運行。操作系統以進程&#xff08;Process&#xff09;的方式運行應用程序&#xff0c;進程不但包括應用程序的指令流&#xff0c;也包括運…

keras中mean square error均方誤差理解

機器學習中&#xff0c;針對不同的問題選用不同的損失函數非常重要&#xff0c;而均方誤差就是最基本&#xff0c;也是在解決回歸問題時最常用的損失函數。本文就keras模塊均方誤差的計算梳理了一些細節。 首先看一下均方誤差的數學定義 : 均方誤差是預測向量與真實向量差值的…

Java并發Semaphore信號量的學習

public class MyThreadTest {private final static Semaphore semaphore new Semaphore(2);// 設置2個車位public static void main(String[] args) {System.out.println("start");p(semaphore, true, 1);p(semaphore, false, 2);p(semaphore, false, 3);p(semaphor…

快速理解binary cross entropy 二元交叉熵

Binary cross entropy 二元交叉熵是二分類問題中常用的一個Loss損失函數&#xff0c;在常見的機器學習模塊中都有實現。本文就二元交叉熵這個損失函數的原理&#xff0c;簡單地進行解釋。 首先是二元交叉熵的公式 : Loss?1N∑i1Nyi?log?(p(yi))(1?yi)?log(1?p(yi))Loss …

Docker搭建自己的GitLab

Docker搭建自己的GitLab docker 介紹 **GitLab: ** GitLab 是一個用于倉庫管理系統的開源項目&#xff0c;使用Git作為代碼管理工具&#xff0c;并在此基礎上搭建起來的web服務 **Docker: ** Docker 是一個開源的應用容器引擎&#xff0c;讓開發者可以打包他們的應用以及依賴…