国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Arthas常用命令

這篇具有很好參考價值的文章主要介紹了Arthas常用命令。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、常用命令

二、常用系統(tǒng)命令

三、JVM相關(guān)命令?

四、class/classloader相關(guān)命令

五、高級命令


一、常用命令

1、dashboard 儀表板

第一部分是顯示JVM中運行的所有線程:所在線程組,優(yōu)先級,線程的狀態(tài),CPU的占用率,是否是后臺進程等

第二部分顯示的JVM內(nèi)存的使用情況

第三部分是操作系統(tǒng)的一些信息和Java版本號

2、通過 thread 命令來獲取線程信息

1、當(dāng)沒有參數(shù)時,顯示所有線程的信息

thread
2、展示當(dāng)前最忙的前3個線程并打印堆棧

thread -n 3
3、顯示1號線程的運行堆棧

thread 1
4、找出當(dāng)前阻塞其他線程的線程,有時候我們發(fā)現(xiàn)應(yīng)用卡住了, 通常是由于某個線程拿住了某個鎖, 并且其他線程都在等待這把鎖造成的。 為了排查這類問題, arthas提供了thread -b, 一鍵找出那個罪魁禍?zhǔn)住?/p>

thread -b
5、指定采樣時間間隔,每過1000毫秒采樣,顯示最占時間的3個線程

thread -i 1000 -n 3
6、查看處于等待狀態(tài)的線程

thread --state WAITING

3、通過 jad 來反編譯獲取源碼

1、編譯java.lang.String

jad java.lang.String
2、反編繹時只顯示源代碼,默認(rèn)情況下,反編譯結(jié)果里會帶有ClassLoader信息,通過–source-only選項,可以只打印源代碼。方便和mc/redefine命令結(jié)合使用。

jad --source-only demo.MathGame
3、反編譯指定的方法

jad demo.MathGame main

4、watch監(jiān)視

watch demo.MathGame(監(jiān)視的包名和類名) primeFactors(監(jiān)視的方法) returnObj(監(jiān)視的返回值)

5、退出arthas

如果只是退出當(dāng)前的連接,可以用quit或者exit命令。Attach到目標(biāo)進程上的arthas還會繼續(xù)運行,端口會保持開放,下次連接時可以直接連接上。

如果想完全退出arthas,可以執(zhí)行stop命令。

二、常用系統(tǒng)命令

1、help 查看命令幫助信息

2、cat 打印文件內(nèi)容,和linux里的cat命令類似 注:漢字有亂碼的問題 如果沒有寫路徑,則顯示當(dāng)前目錄下的文件

3、grep 匹配查找,和linux里的grep命令類似,但它只能用于管道命令

4、pwd 返回當(dāng)前的工作目錄,和linux命令類似

5、cls 清空當(dāng)前屏幕區(qū)域

6、session 查看當(dāng)前會話的信息

7、reset 重置增強類,將被 Arthas 增強過的類全部還原,Arthas 服務(wù)端關(guān)閉時會重置所有增強過的類

8、version 輸出當(dāng)前目標(biāo) Java 進程所加載的 Arthas 版本號

9、history 打印命令歷史

10、quit 退出當(dāng)前 Arthas 客戶端,其他 Arthas 客戶端不受影響

11、stop 關(guān)閉 Arthas 服務(wù)端,所有 Arthas 客戶端全部退出

12、keymap Arthas快捷鍵列表及自定義快捷鍵

三、JVM相關(guān)命令?

1、sysprop:查看和修改JVM的系統(tǒng)屬性

# 查看所有屬性

sysprop

# 查看單個屬性,支持通過tab補全

sysprop java.version

# 修改單個屬性

sysprop user.country

sysprop user.country CN

2、sysenv:查看當(dāng)前JVM的環(huán)境屬性

# 查看所有屬性

sysenv

# 查看單個環(huán)境變量

sysenv USER

3、vmoption:查看,更新JVM診斷相關(guān)的參數(shù)

# 查看所有的選項

vmoption

# 查看指定的選項

vmoption PrintGCDetails

# 更新指定的選項

vmoption PrintGCDetails true

4、 getstatic:查看類的靜態(tài)屬性

getstatic 類名 屬性名

5、ognl:可替代上面getstatic命令

# 調(diào)用靜態(tài)函數(shù)

ognl '@java.lang.System@out.println("hello")'

# 獲取靜態(tài)類的靜態(tài)字段

ognl '@demo.MathGame@random'

# 執(zhí)行多行表達式,賦值給臨時變量,返回一個List

ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}

?四、class/classloader相關(guān)命令

1、sc:?查看JVM已加載的類信息

2、sm :查看已加載類的方法信息

參數(shù)名稱 參數(shù)說明
class-pattern 類名表達式匹配
method-pattern 方法名表達式匹配
[d] 展示每個方法的詳細(xì)信息
[E] 開啟正則表達式匹配,默認(rèn)為通配符匹配

3、jad:反編譯指定已加載類的源碼。

參數(shù)名稱 參數(shù)說明
class-pattern 類名表達式匹配
[E] 開啟正則表達式匹配,默認(rèn)為通配符匹配

4、mc:編譯.java文件生成.class

# 在內(nèi)存中編譯Hello.java為Hello.class

mc /root/Hello.java

# 可以通過-d命令指定輸出目錄

mc -d /root/bbb /root/Hello.java

5、redefine:加載外部的.class文件,redefine到JVM里

注意, redefine后的原來的類不能恢復(fù),redefine有可能失?。ū热缭黾恿诵碌膄ield),參考jdk本身的文檔。

? ? ? ? 1、reset命令對redefine的類無效。如果想重置,需要redefine原始的字節(jié)碼。

? ? ? ? 2、redefine命令和jad/watch/trace/monitor/tt等命令會沖突。執(zhí)行完redefine之后,如果 再執(zhí)行上面提到的命令,則會把redefine的字節(jié)碼重置。

? ? ? ? 3、不允許新增加field/method 正在跑的函數(shù),沒有退出不能生效

? ? ? ? 4、結(jié)合 jad/mc 命令使用?

????????????????# 1. 使用jad反編譯demo.MathGame輸出到/root/MathGame.java

????????????????????????jad --source-only demo.MathGame > /root/MathGame.java

????????????????#2.按上面的代碼編輯完畢以后,使用mc內(nèi)存中對新的代碼編譯

????????????????????????mc /root/MathGame.java -d /root

????????????????# 3.使用redefine命令加載新的字節(jié)碼

????????????????????????redefine /root/demo/MathGame.class

五、高級命令

1、dump:?將正在JVM中運行的程序的字節(jié)碼文件提取出來,保存在logs相應(yīng)的目錄下,不同的類加載器放在不同的目錄

參數(shù)名稱 參數(shù)說明
class-pattern 類名表達式匹配
[c:] 類所屬 ClassLoader 的 hashcode
[E] 開啟正則表達式匹配,默認(rèn)為通配符匹配

# 把String類的字節(jié)碼文件保存到~/logs/arthas/classdump/目錄下

dump java.lang.String?

# 把demo包下所有的類的字節(jié)碼文件保存到~/logs/arthas/classdump/目錄下

dump demo.*

?

2、classloader:獲取類加載器的信息

默認(rèn)按類加載器的類型查看統(tǒng)計信息

classloader
按類加載器的實例查看統(tǒng)計信息,可以看到類加載的hashCode

classloader -l
查看ClassLoader的繼承樹

classloader -t
通過類加載器的hash,查看此類加載器實際所在的位置

classloader -c 680f2737
使用ClassLoader去查找指定資源resource所在的位置

classloader -c 680f2737 -r META-INF/MANIFEST.MF
使用ClassLoader去查找類的class文件所在的位置

classloader -c 680f2737 -r java/lang/String.class
使用ClassLoader去加載類

classloader -c 70dea4e --load java.lang.String

3、monitor:監(jiān)控指定類中方法的執(zhí)行情況

每5秒監(jiān)控一次,類demo.MathGame中primeFactors方法

monitor -c 5 demo.MathGame primeFactors

4、watch :觀察到指定方法的調(diào)用情況

class-pattern?? ?類名表達式匹配
method-pattern?? ?方法名表達式匹配
express?? ?觀察表達式
condition-express?? ?條件表達式
[b]?? ?在方法調(diào)用之前觀察 before
[e]?? ?在方法異常之后觀察 exception
[s]?? ?在方法返回之后觀察 success
[f]?? ?在方法結(jié)束之后(正常返回和異常返回)觀察 finish
[E]?? ?開啟正則表達式匹配,默認(rèn)為通配符匹配
[x:]?? ?指定輸出結(jié)果的屬性遍歷深度,默認(rèn)為 1

5、trace :方法調(diào)用耗時追蹤

trace函數(shù)指定類的指定方法

trace demo.MathGame run
如果方法調(diào)用的次數(shù)很多,那么可以用-n參數(shù)指定捕捉結(jié)果的次數(shù)。比如下面的例子里,捕捉到一次調(diào)用就退出命令。

trace demo.MathGame run -n 1
默認(rèn)情況下,trace不會包含jdk里的函數(shù)調(diào)用,如果希望trace jdk里的函數(shù),需要顯式設(shè)置–skipJDKMethod false。

trace --skipJDKMethod false demo.MathGame run
據(jù)調(diào)用耗時過濾,trace大于0.5ms的調(diào)用路徑

trace demo.MathGame run '#cost > .5'
可以用正則表匹配路徑上的多個類和函數(shù),一定程度上達到多層trace的效果。

trace -E com.test.ClassA|org.test.ClassB method1|method2|method3

?6、stack:查看方法調(diào)用鏈

獲取primeFactors的調(diào)用路徑

stack demo.MathGame primeFactors
條件表達式來過濾,第0個參數(shù)的值小于0,-n表示獲取2次

stack demo.MathGame primeFactors 'params[0]<0' -n 2
據(jù)執(zhí)行時間來過濾,耗時大于0.5毫秒

stack demo.MathGame primeFactors '#cost>0.5'

7、tt:查看方法的出入?yún)?shù)

tt的參數(shù) 說明
-t 記錄某個方法在一個時間段中的調(diào)用
-l 顯示所有已經(jīng)記錄的列表
-n 次數(shù) 只記錄多少次
-s 表達式 搜索表達式
-i 索引號 查看指定索引號的詳細(xì)調(diào)用信息
-p 重新調(diào)用指定的索引號時間碎片

記錄下當(dāng)前方法的每次調(diào)用環(huán)境現(xiàn)場。

tt -t demo.MathGame primeFactors?

8、options:全局開關(guān)

查看所有的options

options

獲取option的值

options json-format

設(shè)置指定的option,打開執(zhí)行結(jié)果存日志功能,輸入如下命令即可:

options save-result true文章來源地址http://www.zghlxwxcb.cn/news/detail-472542.html

到了這里,關(guān)于Arthas常用命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • shell命令之文件目錄常用命令

    1.1返回到某一級目錄 dirName1、dirName2、dirName3表示某一目錄; 1.2返回到上級目錄 也可以寫成: 1.3返回到家目錄 1.4返回上一次目錄 2.1查看當(dāng)前目錄 顯示當(dāng)前目錄下的文件和目錄; -l 列出文件和目錄的詳細(xì)信息,可縮寫成ll; -a 列出當(dāng)前目錄下所有文件及目錄,包括隱藏的文件或

    2024年02月06日
    瀏覽(29)
  • Windows基礎(chǔ)命令:目錄和文件操作&文本處理&網(wǎng)絡(luò)相關(guān)操作

    Windows基礎(chǔ)命令:目錄和文件操作&文本處理&網(wǎng)絡(luò)相關(guān)操作

    方法一:打開\\\"運行\(zhòng)\\"對話框(Win+R),輸入cmd 也可以通過cmd /c 命令和cmd /k 命令的方式來直接運行命令(/c表示執(zhí)行完命令后關(guān)閉cmd窗口;/k表示執(zhí)行完命令后保留cmd窗口) 方法二:在任務(wù)欄直接搜索“cmd” 顯示當(dāng)前目錄或改變當(dāng)前目錄 語法規(guī)則 (1)顯示目錄 顯示當(dāng)前驅(qū)動

    2024年02月05日
    瀏覽(16)
  • windows常用命令及相關(guān)命令

    目錄 一、cmd的打開方式 二、windows常用命令 三、網(wǎng)絡(luò)操作命令 四、系統(tǒng)操作命令 五、用戶與管理 六、查看自己的本機重要信息 七、windows命令之mysql授權(quán) 任務(wù)欄搜索框里輸入cmd能打開 在文檔的路徑框里輸入cmd能打開 win + r打開運行---輸入cmd ---回車進入命令提示符窗口 win

    2024年02月14日
    瀏覽(16)
  • cmd常用命令:更換文件夾、切換路徑、查看目錄和返回根目錄和子目錄

    cmd常用命令:更換文件夾、切換路徑、查看目錄和返回根目錄和子目錄

    打開cmd:快捷鍵 Win+R,輸入cmd 打開cmd之后,默認(rèn)是在C:Users電腦路徑 文件夾中 更換磁盤:輸入D:,然后回車 +dir查看當(dāng)前目錄 cd…可以返回上一級目錄 cd 返回到根目錄 輸入 cd 文件夾名, 可以進入子文件夾 例如輸入 cd Program Files/Java/jdk-19/ 【注意反斜杠】 cmd命令打開及切換目

    2023年04月18日
    瀏覽(162)
  • Linux——認(rèn)識Linux的目錄結(jié)構(gòu) & 常用命令 & vim命令 & 權(quán)限及其控制

    Linux——認(rèn)識Linux的目錄結(jié)構(gòu) & 常用命令 & vim命令 & 權(quán)限及其控制

    一切皆文件 文件分類 【安裝】Linux環(huán)境下的 JDK的安裝 安裝配置 環(huán)境變量 1.進程kill -9 運行窗口退出 2.ctrl c退出 ls -a 查看所有文件(包含隱藏) ? ls -la 查看所有文件詳細(xì)信息 查看當(dāng)前文件夾下的文件 在 Linux 系統(tǒng)中,ls 和 ll 命令都是用來列出目錄內(nèi)容的命令,它們的區(qū)別

    2024年02月16日
    瀏覽(54)
  • Linux工作原理2常用基本命令和目錄層次結(jié)構(gòu)

    Linux工作原理2常用基本命令和目錄層次結(jié)構(gòu)

    本章是對本書中你將遇到的Unix命令和工具的指南。 為什么是Unix命令?這不是一本關(guān)于Linux如何工作的書嗎?當(dāng)然是的,但Linux在本質(zhì)上是一種Unix風(fēng)格。在本章中,你會看到Unix這個詞,而不是Linux,因為你可以把你學(xué)到的東西直接帶到BSD和其他Unix風(fēng)味的系統(tǒng)中去。我試圖避免

    2024年02月06日
    瀏覽(21)
  • liunx 常用命令1-目錄/文件:新建、修改、移動和刪除

    ?? ?創(chuàng)建 ?? ??? ?mkdir newdir ?? ??? ?#遞歸地創(chuàng)建多級目錄 ?? ??? ?mkdir -p /path/to/newdir/subdir ? ?? ? ?? ?更改權(quán)限 ?? ??? ?chmod 755 /path/to/directory ?? ? ?? ?更改所有者和組 ?? ??? ?##將“/home/user/documents”目錄的所有者更改為“newowner”,組更改為“newgroup” ??

    2024年02月01日
    瀏覽(24)
  • linux常用命令介紹 06 篇——Linux查看目錄層級結(jié)構(gòu)以及創(chuàng)建不同情況的層級目錄

    linux常用命令介紹 06 篇——Linux查看目錄層級結(jié)構(gòu)以及創(chuàng)建不同情況的層級目錄

    Linux命令01篇——Linux解壓縮文件常用命令. Linux命令02篇——linux日常常用命令介紹. linux常用命令介紹 03 篇——常用的文本處理工具之grep和cut(以及部分正則使用). linux常用命令介紹 04 篇——uniq命令使用介紹(Linux重復(fù)數(shù)據(jù)的統(tǒng)計處理). linux常用命令介紹 05 篇——實際應(yīng)用

    2024年02月12日
    瀏覽(25)
  • cmake常用命令(1)——函數(shù)相關(guān)

    cmake中的函數(shù)與其他語言相似,表示一個命令集,可以被重復(fù)調(diào)用。形式如下: function:表示函數(shù)開始 name:函數(shù)名 arg1 ...:表示參數(shù)與name用 空格分隔 ,多個參數(shù)間用 空格分隔 ,可省略。 commands:表示命令集。 enfunction:表示函數(shù)結(jié)束。endfunction實際形式為: 其中name可以省

    2024年02月13日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包