mirror of
https://github.com/alibaba/arthas.git
synced 2026-10-21 12:32:38 +00:00
Update docs to version 4.3.5
This commit is contained in:
Binary file not shown.
@@ -8,10 +8,10 @@
|
||||
|
||||
# program : Arthas
|
||||
# author : Core Engine @ Taobao.com
|
||||
# date : 2026-08-12
|
||||
# date : 2026-08-31
|
||||
|
||||
# current arthas script version
|
||||
ARTHAS_SCRIPT_VERSION=4.3.3
|
||||
ARTHAS_SCRIPT_VERSION=4.3.5
|
||||
|
||||
# SYNOPSIS
|
||||
# rreadlink <fileOrDirPath>
|
||||
@@ -468,7 +468,7 @@ EXAMPLES:
|
||||
./as.sh --stat-url 'http://192.168.10.11:8080/api/stat'
|
||||
./as.sh -c 'sysprop; thread' <pid>
|
||||
./as.sh -f batch.as <pid>
|
||||
./as.sh --use-version 4.3.3
|
||||
./as.sh --use-version 4.3.5
|
||||
./as.sh --session-timeout 3600
|
||||
./as.sh --attach-only
|
||||
./as.sh --disabled-commands stop,dump
|
||||
@@ -926,14 +926,17 @@ sanity_check() {
|
||||
|
||||
# 1 check the current user matches the process owner
|
||||
local current_user=$(id -u -n)
|
||||
# the last '=' after 'user' eliminates the column header
|
||||
local target_user=$(ps -p "${TARGET_PID}" -o user=)
|
||||
if [ "$current_user" != "$target_user" ]; then
|
||||
echo "The current user ($current_user) does not match with the owner of process ${TARGET_PID} ($target_user)."
|
||||
echo "To solve this, choose one of the following command:"
|
||||
echo " 1) sudo su $target_user && ./as.sh"
|
||||
echo " 2) sudo -u $target_user -EH ./as.sh"
|
||||
exit_on_err 1
|
||||
# root 可以 attach 任意进程(例如 k8s 临时 debug 容器以 root 调试普通用户的应用),跳过一致性检查
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
# the last '=' after 'user' eliminates the column header
|
||||
local target_user=$(ps -p "${TARGET_PID}" -o user=)
|
||||
if [ "$current_user" != "$target_user" ]; then
|
||||
echo "The current user ($current_user) does not match with the owner of process ${TARGET_PID} ($target_user)."
|
||||
echo "To solve this, choose one of the following command:"
|
||||
echo " 1) sudo su $target_user && ./as.sh"
|
||||
echo " 2) sudo -u $target_user -EH ./as.sh"
|
||||
exit_on_err 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound"},"excerpt":"","headers":[],"git":{},"filePathRelative":null,"version":"4.3.3"}');export{t as data};
|
||||
const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound"},"excerpt":"","headers":[],"git":{},"filePathRelative":null,"version":"4.3.5"}');export{t as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as e,o as c,c as t}from"./app.524ecf5c.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default};
|
||||
import{_ as e,o as c,c as t}from"./app.e2427bec.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-0d09f68d","path":"/doc/advanced-use.html","title":"\u5176\u4ED6\u7279\u6027","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","slug":"arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","link":"#arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","children":[]},{"level":2,"title":"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","slug":"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","link":"#\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","children":[]},{"level":2,"title":"Docker","slug":"docker","link":"#docker","children":[]},{"level":2,"title":"Web Console","slug":"web-console","link":"#web-console","children":[]},{"level":2,"title":"Arthas Tunnel","slug":"arthas-tunnel","link":"#arthas-tunnel","children":[]},{"level":2,"title":"ognl \u8868\u8FBE\u5F0F\u7528\u6CD5","slug":"ognl-\u8868\u8FBE\u5F0F\u7528\u6CD5","link":"#ognl-\u8868\u8FBE\u5F0F\u7528\u6CD5","children":[]},{"level":2,"title":"IDEA Plugin","slug":"idea-plugin","link":"#idea-plugin","children":[]},{"level":2,"title":"Arthas Properties","slug":"arthas-properties","link":"#arthas-properties","children":[]},{"level":2,"title":"\u4EE5 java agent \u65B9\u5F0F\u542F\u52A8","slug":"\u4EE5-java-agent-\u65B9\u5F0F\u542F\u52A8","link":"#\u4EE5-java-agent-\u65B9\u5F0F\u542F\u52A8","children":[]},{"level":2,"title":"Arthas Spring Boot Starter","slug":"arthas-spring-boot-starter","link":"#arthas-spring-boot-starter","children":[]},{"level":2,"title":"\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","slug":"\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","link":"#\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","children":[]},{"level":2,"title":"HTTP API","slug":"http-api","link":"#http-api","children":[]},{"level":2,"title":"\u6279\u5904\u7406\u529F\u80FD","slug":"\u6279\u5904\u7406\u529F\u80FD","link":"#\u6279\u5904\u7406\u529F\u80FD","children":[]},{"level":2,"title":"as.sh \u548C arthas-boot \u6280\u5DE7","slug":"as-sh-\u548C-arthas-boot-\u6280\u5DE7","link":"#as-sh-\u548C-arthas-boot-\u6280\u5DE7","children":[]},{"level":2,"title":"\u7528\u6237\u6570\u636E\u56DE\u62A5","slug":"\u7528\u6237\u6570\u636E\u56DE\u62A5","link":"#\u7528\u6237\u6570\u636E\u56DE\u62A5","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/advanced-use.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-0d09f68d","path":"/doc/advanced-use.html","title":"\u5176\u4ED6\u7279\u6027","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","slug":"arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","link":"#arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","children":[]},{"level":2,"title":"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","slug":"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","link":"#\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","children":[]},{"level":2,"title":"Docker","slug":"docker","link":"#docker","children":[]},{"level":2,"title":"Web Console","slug":"web-console","link":"#web-console","children":[]},{"level":2,"title":"Arthas Tunnel","slug":"arthas-tunnel","link":"#arthas-tunnel","children":[]},{"level":2,"title":"ognl \u8868\u8FBE\u5F0F\u7528\u6CD5","slug":"ognl-\u8868\u8FBE\u5F0F\u7528\u6CD5","link":"#ognl-\u8868\u8FBE\u5F0F\u7528\u6CD5","children":[]},{"level":2,"title":"IDEA Plugin","slug":"idea-plugin","link":"#idea-plugin","children":[]},{"level":2,"title":"Arthas Properties","slug":"arthas-properties","link":"#arthas-properties","children":[]},{"level":2,"title":"\u4EE5 java agent \u65B9\u5F0F\u542F\u52A8","slug":"\u4EE5-java-agent-\u65B9\u5F0F\u542F\u52A8","link":"#\u4EE5-java-agent-\u65B9\u5F0F\u542F\u52A8","children":[]},{"level":2,"title":"Arthas Spring Boot Starter","slug":"arthas-spring-boot-starter","link":"#arthas-spring-boot-starter","children":[]},{"level":2,"title":"\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","slug":"\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","link":"#\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","children":[]},{"level":2,"title":"HTTP API","slug":"http-api","link":"#http-api","children":[]},{"level":2,"title":"\u6279\u5904\u7406\u529F\u80FD","slug":"\u6279\u5904\u7406\u529F\u80FD","link":"#\u6279\u5904\u7406\u529F\u80FD","children":[]},{"level":2,"title":"as.sh \u548C arthas-boot \u6280\u5DE7","slug":"as-sh-\u548C-arthas-boot-\u6280\u5DE7","link":"#as-sh-\u548C-arthas-boot-\u6280\u5DE7","children":[]},{"level":2,"title":"\u7528\u6237\u6570\u636E\u56DE\u62A5","slug":"\u7528\u6237\u6570\u636E\u56DE\u62A5","link":"#\u7528\u6237\u6570\u636E\u56DE\u62A5","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/advanced-use.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as i,o as l,c,a,b as e,w as t,e as s,d,r}from"./app.524ecf5c.js";const p={},h=a("h1",{id:"other-features",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#other-features","aria-hidden":"true"},"#"),s(" Other features")],-1),u=a("h2",{id:"arthas-async-jobs",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-async-jobs","aria-hidden":"true"},"#"),s(" Arthas Async Jobs")],-1),m=a("p",null,"If you need to investigate an issue, but you are unsure about the exact time it occurs, you can run the monitoring command in the background and save the output to a log file.",-1),b=s("Arthas Async Jobs"),_=a("h2",{id:"log-the-output",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#log-the-output","aria-hidden":"true"},"#"),s(" Log the output")],-1),v=a("p",null,"All execution records are fully saved in the log file for subsequent analysis.",-1),k=s("log the output"),g=a("h2",{id:"docker",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#docker","aria-hidden":"true"},"#"),s(" Docker")],-1),f=a("p",null,"Arthas configuration reference for using in Docker containers.",-1),x=s("Docker"),A=a("h2",{id:"web-console",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#web-console","aria-hidden":"true"},"#"),s(" Web Console")],-1),w=a("p",null,"Arthas supports living inside a browser. The communication between arthas and browser is via websocket.",-1),y=s("Web Console"),j=a("h2",{id:"arthas-tunnel",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-tunnel","aria-hidden":"true"},"#"),s(" Arthas Tunnel")],-1),I=a("p",null,"Arthas Tunnel Server/Client enables remote management/connection to Java services across multiple servers.",-1),T=s("Arthas Tunnel"),S=a("h2",{id:"how-to-use-ognl",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#how-to-use-ognl","aria-hidden":"true"},"#"),s(" How to use ognl")],-1),C={href:"https://github.com/alibaba/arthas/issues/11",target:"_blank",rel:"noopener noreferrer"},P=s("Basic ognl example"),E={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},B=s("Ognl special uses"),J=a("h2",{id:"idea-plugin",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#idea-plugin","aria-hidden":"true"},"#"),s(" IDEA Plugin")],-1),L=a("p",null,"Build arthas commands more efficiently in the IntelliJ IDEA compiler.",-1),D=s("IDEA Plugin"),N=a("h2",{id:"arthas-properties",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-properties","aria-hidden":"true"},"#"),s(" Arthas Properties")],-1),O=a("p",null,"Arthas supports configuration options reference.",-1),H=s("Arthas Properties"),V=a("h2",{id:"start-as-a-java-agent",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#start-as-a-java-agent","aria-hidden":"true"},"#"),s(" Start as a Java Agent")],-1),U=s("Start as a Java Agent"),F=a("h2",{id:"arthas-spring-boot-starter",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-spring-boot-starter","aria-hidden":"true"},"#"),s(" Arthas Spring Boot Starter")],-1),R=a("p",null,"Starting with the application.",-1),W=s("Arthas Spring Boot Starter"),$=a("h2",{id:"load-external-commands",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#load-external-commands","aria-hidden":"true"},"#"),s(" Load External Commands")],-1),q=a("p",null,"Load external command jars when Arthas starts and extend team-specific diagnostic actions as Arthas commands.",-1),z=s("Load External Commands"),M=a("h2",{id:"http-api",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#http-api","aria-hidden":"true"},"#"),s(" HTTP API")],-1),G=a("p",null,"The Http API provides structured data and supports more complex interactive functions, making it easier to integrate Arthas into custom interfaces.",-1),K=s("HTTP API"),Q=a("h2",{id:"batch-processing",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#batch-processing","aria-hidden":"true"},"#"),s(" Batch Processing")],-1),X=a("p",null,[s("It is convenient for running multiple commands in bulk with custom scripts. It can be used in conjunction with the "),a("code",null,"--select"),s(" parameter to specify the process name.")],-1),Y=s("Batch Processing"),Z=d(`<h2 id="as-sh-and-arthas-boot-tips" tabindex="-1"><a class="header-anchor" href="#as-sh-and-arthas-boot-tips" aria-hidden="true">#</a> as.sh and arthas-boot tips</h2><ul><li>Select the process to be attached via the <code>select</code> option.</li></ul><p>Normally, <code>as.sh</code>/<code>arthas-boot.jar</code> needs to a pid, bacause the pid will change.</p><p>For example, with <code>math-game.jar</code> already started, use the <code>jps</code> command to see.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ jps
|
||||
import{_ as i,o as l,c,a,b as e,w as t,e as s,d,r}from"./app.e2427bec.js";const p={},h=a("h1",{id:"other-features",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#other-features","aria-hidden":"true"},"#"),s(" Other features")],-1),u=a("h2",{id:"arthas-async-jobs",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-async-jobs","aria-hidden":"true"},"#"),s(" Arthas Async Jobs")],-1),m=a("p",null,"If you need to investigate an issue, but you are unsure about the exact time it occurs, you can run the monitoring command in the background and save the output to a log file.",-1),b=s("Arthas Async Jobs"),_=a("h2",{id:"log-the-output",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#log-the-output","aria-hidden":"true"},"#"),s(" Log the output")],-1),v=a("p",null,"All execution records are fully saved in the log file for subsequent analysis.",-1),k=s("log the output"),g=a("h2",{id:"docker",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#docker","aria-hidden":"true"},"#"),s(" Docker")],-1),f=a("p",null,"Arthas configuration reference for using in Docker containers.",-1),x=s("Docker"),A=a("h2",{id:"web-console",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#web-console","aria-hidden":"true"},"#"),s(" Web Console")],-1),w=a("p",null,"Arthas supports living inside a browser. The communication between arthas and browser is via websocket.",-1),y=s("Web Console"),j=a("h2",{id:"arthas-tunnel",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-tunnel","aria-hidden":"true"},"#"),s(" Arthas Tunnel")],-1),T=a("p",null,"Arthas Tunnel Server/Client enables remote management/connection to Java services across multiple servers.",-1),I=s("Arthas Tunnel"),S=a("h2",{id:"how-to-use-ognl",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#how-to-use-ognl","aria-hidden":"true"},"#"),s(" How to use ognl")],-1),C=s("Tips for complex OGNL expressions"),P={href:"https://github.com/alibaba/arthas/issues/11",target:"_blank",rel:"noopener noreferrer"},E=s("Basic ognl example"),B=a("h2",{id:"idea-plugin",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#idea-plugin","aria-hidden":"true"},"#"),s(" IDEA Plugin")],-1),L=a("p",null,"Build arthas commands more efficiently in the IntelliJ IDEA compiler.",-1),J=s("IDEA Plugin"),N=a("h2",{id:"arthas-properties",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-properties","aria-hidden":"true"},"#"),s(" Arthas Properties")],-1),D=a("p",null,"Arthas supports configuration options reference.",-1),O=s("Arthas Properties"),H=a("h2",{id:"start-as-a-java-agent",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#start-as-a-java-agent","aria-hidden":"true"},"#"),s(" Start as a Java Agent")],-1),V=s("Start as a Java Agent"),U=a("h2",{id:"arthas-spring-boot-starter",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-spring-boot-starter","aria-hidden":"true"},"#"),s(" Arthas Spring Boot Starter")],-1),F=a("p",null,"Starting with the application.",-1),R=s("Arthas Spring Boot Starter"),W=a("h2",{id:"load-external-commands",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#load-external-commands","aria-hidden":"true"},"#"),s(" Load External Commands")],-1),$=a("p",null,"Load external command jars when Arthas starts and extend team-specific diagnostic actions as Arthas commands.",-1),q=s("Load External Commands"),z=a("h2",{id:"http-api",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#http-api","aria-hidden":"true"},"#"),s(" HTTP API")],-1),G=a("p",null,"The Http API provides structured data and supports more complex interactive functions, making it easier to integrate Arthas into custom interfaces.",-1),M=s("HTTP API"),K=a("h2",{id:"batch-processing",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#batch-processing","aria-hidden":"true"},"#"),s(" Batch Processing")],-1),Q=a("p",null,[s("It is convenient for running multiple commands in bulk with custom scripts. It can be used in conjunction with the "),a("code",null,"--select"),s(" parameter to specify the process name.")],-1),X=s("Batch Processing"),Y=d(`<h2 id="as-sh-and-arthas-boot-tips" tabindex="-1"><a class="header-anchor" href="#as-sh-and-arthas-boot-tips" aria-hidden="true">#</a> as.sh and arthas-boot tips</h2><ul><li>Select the process to be attached via the <code>select</code> option.</li></ul><p>Normally, <code>as.sh</code>/<code>arthas-boot.jar</code> needs to a pid, bacause the pid will change.</p><p>For example, with <code>math-game.jar</code> already started, use the <code>jps</code> command to see.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ jps
|
||||
<span class="token number">58883</span> math-game.jar
|
||||
<span class="token number">58884</span> Jps
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>The <code>select</code> option allows you to specify a process name, which is very convenient.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ ./as.sh <span class="token parameter variable">--select</span> math-game
|
||||
@@ -24,7 +24,6 @@ Escape character is <span class="token string">'^]'</span><span class="t
|
||||
|
||||
|
||||
wiki https://arthas.aliyun.com/doc
|
||||
tutorials https://arthas.aliyun.com/doc/arthas-tutorials.html
|
||||
version <span class="token number">3.3</span>.6
|
||||
pid <span class="token number">58883</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="user-data-report" tabindex="-1"><a class="header-anchor" href="#user-data-report" aria-hidden="true">#</a> User data report</h2><p>After the <code>3.1.4</code> version, arthas support user data report.</p><p>At startup, use the <code>stat-url</code> option, such as: <code>./as.sh --stat-url 'http://192.168.10.11:8080/api/stat'</code></p><p>There is a sample data report in the tunnel server that users can implement on their own.</p>`,11),aa={href:"https://github.com/alibaba/arthas/blob/master/tunnel-server/src/main/java/com/alibaba/arthas/tunnel/server/app/web/StatController.java",target:"_blank",rel:"noopener noreferrer"},sa=s("StatController.java");function ea(na,ta){const n=r("RouterLink"),o=r("ExternalLinkIcon");return l(),c("div",null,[h,u,m,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/async.html"},{default:t(()=>[b]),_:1})])]),_,v,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/save-log.html"},{default:t(()=>[k]),_:1})])]),g,f,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/docker.html"},{default:t(()=>[x]),_:1})])]),A,w,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/web-console.html"},{default:t(()=>[y]),_:1})])]),j,I,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/tunnel.html"},{default:t(()=>[T]),_:1})])]),S,a("ul",null,[a("li",null,[a("a",C,[P,e(o)])]),a("li",null,[a("a",E,[B,e(o)])])]),J,L,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/idea-plugin.html"},{default:t(()=>[D]),_:1})])]),N,O,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/arthas-properties.html"},{default:t(()=>[H]),_:1})])]),V,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/agent.html"},{default:t(()=>[U]),_:1})])]),F,R,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/spring-boot-starter.html"},{default:t(()=>[W]),_:1})])]),$,q,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/external-command.html"},{default:t(()=>[z]),_:1})])]),M,G,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/http-api.html"},{default:t(()=>[K]),_:1})])]),Q,X,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/batch-support.html"},{default:t(()=>[Y]),_:1})])]),Z,a("p",null,[a("a",aa,[sa,e(o)])])])}const ra=i(p,[["render",ea],["__file","advanced-use.html.vue"]]);export{ra as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="user-data-report" tabindex="-1"><a class="header-anchor" href="#user-data-report" aria-hidden="true">#</a> User data report</h2><p>After the <code>3.1.4</code> version, arthas support user data report.</p><p>At startup, use the <code>stat-url</code> option, such as: <code>./as.sh --stat-url 'http://192.168.10.11:8080/api/stat'</code></p><p>There is a sample data report in the tunnel server that users can implement on their own.</p>`,11),Z={href:"https://github.com/alibaba/arthas/blob/master/tunnel-server/src/main/java/com/alibaba/arthas/tunnel/server/app/web/StatController.java",target:"_blank",rel:"noopener noreferrer"},aa=s("StatController.java");function sa(ea,na){const n=r("RouterLink"),o=r("ExternalLinkIcon");return l(),c("div",null,[h,u,m,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/async.html"},{default:t(()=>[b]),_:1})])]),_,v,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/save-log.html"},{default:t(()=>[k]),_:1})])]),g,f,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/docker.html"},{default:t(()=>[x]),_:1})])]),A,w,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/web-console.html"},{default:t(()=>[y]),_:1})])]),j,T,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/tunnel.html"},{default:t(()=>[I]),_:1})])]),S,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/ognl-express.html"},{default:t(()=>[C]),_:1})]),a("li",null,[a("a",P,[E,e(o)])])]),B,L,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/idea-plugin.html"},{default:t(()=>[J]),_:1})])]),N,D,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/arthas-properties.html"},{default:t(()=>[O]),_:1})])]),H,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/agent.html"},{default:t(()=>[V]),_:1})])]),U,F,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/spring-boot-starter.html"},{default:t(()=>[R]),_:1})])]),W,$,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/external-command.html"},{default:t(()=>[q]),_:1})])]),z,G,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/http-api.html"},{default:t(()=>[M]),_:1})])]),K,Q,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/batch-support.html"},{default:t(()=>[X]),_:1})])]),Y,a("p",null,[a("a",Z,[aa,e(o)])])])}const oa=i(p,[["render",sa],["__file","advanced-use.html.vue"]]);export{oa as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-463d120e","path":"/en/doc/advanced-use.html","title":"Other features","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Arthas Async Jobs","slug":"arthas-async-jobs","link":"#arthas-async-jobs","children":[]},{"level":2,"title":"Log the output","slug":"log-the-output","link":"#log-the-output","children":[]},{"level":2,"title":"Docker","slug":"docker","link":"#docker","children":[]},{"level":2,"title":"Web Console","slug":"web-console","link":"#web-console","children":[]},{"level":2,"title":"Arthas Tunnel","slug":"arthas-tunnel","link":"#arthas-tunnel","children":[]},{"level":2,"title":"How to use ognl","slug":"how-to-use-ognl","link":"#how-to-use-ognl","children":[]},{"level":2,"title":"IDEA Plugin","slug":"idea-plugin","link":"#idea-plugin","children":[]},{"level":2,"title":"Arthas Properties","slug":"arthas-properties","link":"#arthas-properties","children":[]},{"level":2,"title":"Start as a Java Agent","slug":"start-as-a-java-agent","link":"#start-as-a-java-agent","children":[]},{"level":2,"title":"Arthas Spring Boot Starter","slug":"arthas-spring-boot-starter","link":"#arthas-spring-boot-starter","children":[]},{"level":2,"title":"Load External Commands","slug":"load-external-commands","link":"#load-external-commands","children":[]},{"level":2,"title":"HTTP API","slug":"http-api","link":"#http-api","children":[]},{"level":2,"title":"Batch Processing","slug":"batch-processing","link":"#batch-processing","children":[]},{"level":2,"title":"as.sh and arthas-boot tips","slug":"as-sh-and-arthas-boot-tips","link":"#as-sh-and-arthas-boot-tips","children":[]},{"level":2,"title":"User data report","slug":"user-data-report","link":"#user-data-report","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/advanced-use.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-463d120e","path":"/en/doc/advanced-use.html","title":"Other features","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Arthas Async Jobs","slug":"arthas-async-jobs","link":"#arthas-async-jobs","children":[]},{"level":2,"title":"Log the output","slug":"log-the-output","link":"#log-the-output","children":[]},{"level":2,"title":"Docker","slug":"docker","link":"#docker","children":[]},{"level":2,"title":"Web Console","slug":"web-console","link":"#web-console","children":[]},{"level":2,"title":"Arthas Tunnel","slug":"arthas-tunnel","link":"#arthas-tunnel","children":[]},{"level":2,"title":"How to use ognl","slug":"how-to-use-ognl","link":"#how-to-use-ognl","children":[]},{"level":2,"title":"IDEA Plugin","slug":"idea-plugin","link":"#idea-plugin","children":[]},{"level":2,"title":"Arthas Properties","slug":"arthas-properties","link":"#arthas-properties","children":[]},{"level":2,"title":"Start as a Java Agent","slug":"start-as-a-java-agent","link":"#start-as-a-java-agent","children":[]},{"level":2,"title":"Arthas Spring Boot Starter","slug":"arthas-spring-boot-starter","link":"#arthas-spring-boot-starter","children":[]},{"level":2,"title":"Load External Commands","slug":"load-external-commands","link":"#load-external-commands","children":[]},{"level":2,"title":"HTTP API","slug":"http-api","link":"#http-api","children":[]},{"level":2,"title":"Batch Processing","slug":"batch-processing","link":"#batch-processing","children":[]},{"level":2,"title":"as.sh and arthas-boot tips","slug":"as-sh-and-arthas-boot-tips","link":"#as-sh-and-arthas-boot-tips","children":[]},{"level":2,"title":"User data report","slug":"user-data-report","link":"#user-data-report","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/advanced-use.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-a736375c","path":"/en/doc/advice-class.html","title":"Fundamental Fields in Expressions","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/advice-class.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-a736375c","path":"/en/doc/advice-class.html","title":"Fundamental Fields in Expressions","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/advice-class.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-46e53834","path":"/doc/advice-class.html","title":"\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/advice-class.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-46e53834","path":"/doc/advice-class.html","title":"\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/advice-class.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as s,o as l,c as o,a as e,b as a,d as r,e as t,r as i}from"./app.524ecf5c.js";const c={},d=r(`<h1 id="fundamental-fields-in-expressions" tabindex="-1"><a class="header-anchor" href="#fundamental-fields-in-expressions" aria-hidden="true">#</a> Fundamental Fields in Expressions</h1><p>There is a very fundamental class <code>Advice</code> for the expressions used in filtering, tracing or monitoring and other aspects in commands.</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Advice</span> <span class="token punctuation">{</span>
|
||||
import{_ as a,o as n,c as s,a as e,b as l,w as o,d as i,r,e as c}from"./app.e2427bec.js";const d={},p=i(`<h1 id="fundamental-fields-in-expressions" tabindex="-1"><a class="header-anchor" href="#fundamental-fields-in-expressions" aria-hidden="true">#</a> Fundamental Fields in Expressions</h1><p>There is a very fundamental class <code>Advice</code> for the expressions used in filtering, tracing or monitoring and other aspects in commands.</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Advice</span> <span class="token punctuation">{</span>
|
||||
|
||||
<span class="token keyword">private</span> <span class="token keyword">final</span> <span class="token class-name">ClassLoader</span> loader<span class="token punctuation">;</span>
|
||||
<span class="token keyword">private</span> <span class="token keyword">final</span> <span class="token class-name">Class</span><span class="token generics"><span class="token punctuation"><</span><span class="token operator">?</span><span class="token punctuation">></span></span> clazz<span class="token punctuation">;</span>
|
||||
@@ -13,4 +13,4 @@ import{_ as s,o as l,c as o,a as e,b as a,d as r,e as t,r as i}from"./app.524ecf
|
||||
|
||||
<span class="token comment">// getter/setter</span>
|
||||
<span class="token punctuation">}</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Description for the variables in the class <code>Advice</code>:</p><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;">loader</td><td style="text-align:left;">the class loader for the current called class</td></tr><tr><td style="text-align:right;">clazz</td><td style="text-align:left;">the reference to the current called class</td></tr><tr><td style="text-align:right;">method</td><td style="text-align:left;">the reference to the current called method</td></tr><tr><td style="text-align:right;">target</td><td style="text-align:left;">the instance of the current called class</td></tr><tr><td style="text-align:right;">params</td><td style="text-align:left;">the parameters for the current call, which is an array (when there's no parameter, it will be an empty array)</td></tr><tr><td style="text-align:right;">returnObj</td><td style="text-align:left;">the return value from the current call - only available when the method call returns normally (<code>isReturn==true</code>), and <code>null</code> is for <code>void</code> return value</td></tr><tr><td style="text-align:right;">throwExp</td><td style="text-align:left;">the exceptions thrown from the current call - only available when the method call throws exception (<code>isThrow==true</code>)</td></tr><tr><td style="text-align:right;">isBefore</td><td style="text-align:left;">flag to indicate the method is about to execute. <code>isBefore==true</code> but <code>isThrow==false</code> and <code>isReturn==false</code> since it's no way to know how the method call will end</td></tr><tr><td style="text-align:right;">isThrow</td><td style="text-align:left;">flag to indicate the method call ends with exception thrown</td></tr><tr><td style="text-align:right;">isReturn</td><td style="text-align:left;">flag to indicate the method call ends normally without exception thrown</td></tr></tbody></table>`,5),p=t("All variables listed above can be used directly in the "),h={href:"https://commons.apache.org/dormant/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},u=t("OGNL expression"),k=t(". The command will not execute and exit if there's illegal OGNL grammar or unexpected variable in the expression."),m={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},g=t("typical use cases"),v=t(";"),f={href:"https://commons.apache.org/dormant/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},y=t("OGNL language guide"),b=t(".");function w(x,_){const n=i("ExternalLinkIcon");return l(),o("div",null,[d,e("p",null,[p,e("a",h,[u,a(n)]),k]),e("ul",null,[e("li",null,[e("a",m,[g,a(n)]),v]),e("li",null,[e("a",f,[y,a(n)]),b])])])}const N=s(c,[["render",w],["__file","advice-class.html.vue"]]);export{N as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Description for the variables in the class <code>Advice</code>:</p><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;">loader</td><td style="text-align:left;">the class loader for the current called class</td></tr><tr><td style="text-align:right;">clazz</td><td style="text-align:left;">the reference to the current called class</td></tr><tr><td style="text-align:right;">method</td><td style="text-align:left;">the reference to the current called method</td></tr><tr><td style="text-align:right;">target</td><td style="text-align:left;">the instance of the current called class</td></tr><tr><td style="text-align:right;">params</td><td style="text-align:left;">the parameters for the current call, which is an array (when there's no parameter, it will be an empty array)</td></tr><tr><td style="text-align:right;">returnObj</td><td style="text-align:left;">the return value from the current call - only available when the method call returns normally (<code>isReturn==true</code>), and <code>null</code> is for <code>void</code> return value</td></tr><tr><td style="text-align:right;">throwExp</td><td style="text-align:left;">the exceptions thrown from the current call - only available when the method call throws exception (<code>isThrow==true</code>)</td></tr><tr><td style="text-align:right;">isBefore</td><td style="text-align:left;">flag to indicate the method is about to execute. <code>isBefore==true</code> but <code>isThrow==false</code> and <code>isReturn==false</code> since it's no way to know how the method call will end</td></tr><tr><td style="text-align:right;">isThrow</td><td style="text-align:left;">flag to indicate the method call ends with exception thrown</td></tr><tr><td style="text-align:right;">isReturn</td><td style="text-align:left;">flag to indicate the method call ends normally without exception thrown</td></tr></tbody></table><p>All variables listed above can be used directly in the OGNL expression. The command will not execute and exit if there's illegal OGNL grammar or unexpected variable in the expression.</p>`,6),u=c("Tips for complex OGNL expressions");function h(k,m){const t=r("RouterLink");return n(),s("div",null,[p,e("ul",null,[e("li",null,[l(t,{to:"/en/doc/ognl-express.html"},{default:o(()=>[u]),_:1})])])])}const y=a(d,[["render",h],["__file","advice-class.html.vue"]]);export{y as default};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as e,o as l,c as o,a as s,b as n,d as r,e as a,r as i}from"./app.524ecf5c.js";const c={},d=r(`<h1 id="\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF" tabindex="-1"><a class="header-anchor" href="#\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF" aria-hidden="true">#</a> \u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF</h1><p>\u65E0\u8BBA\u662F\u5339\u914D\u8868\u8FBE\u5F0F\u4E5F\u597D\u3001\u89C2\u5BDF\u8868\u8FBE\u5F0F\u4E5F\u7F62\uFF0C\u4ED6\u4EEC\u6838\u5FC3\u5224\u65AD\u53D8\u91CF\u90FD\u662F\u56F4\u7ED5\u7740\u4E00\u4E2A Arthas \u4E2D\u7684\u901A\u7528\u901A\u77E5\u5BF9\u8C61 <code>Advice</code> \u8FDB\u884C\u3002</p><p>\u5B83\u7684\u7B80\u7565\u4EE3\u7801\u7ED3\u6784\u5982\u4E0B</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Advice</span> <span class="token punctuation">{</span>
|
||||
import{_ as t,o as n,c as e,a as s,b as l,w as o,d,r as i,e as c}from"./app.e2427bec.js";const p={},r=d(`<h1 id="\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF" tabindex="-1"><a class="header-anchor" href="#\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF" aria-hidden="true">#</a> \u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF</h1><p>\u65E0\u8BBA\u662F\u5339\u914D\u8868\u8FBE\u5F0F\u4E5F\u597D\u3001\u89C2\u5BDF\u8868\u8FBE\u5F0F\u4E5F\u7F62\uFF0C\u4ED6\u4EEC\u6838\u5FC3\u5224\u65AD\u53D8\u91CF\u90FD\u662F\u56F4\u7ED5\u7740\u4E00\u4E2A Arthas \u4E2D\u7684\u901A\u7528\u901A\u77E5\u5BF9\u8C61 <code>Advice</code> \u8FDB\u884C\u3002</p><p>\u5B83\u7684\u7B80\u7565\u4EE3\u7801\u7ED3\u6784\u5982\u4E0B</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Advice</span> <span class="token punctuation">{</span>
|
||||
|
||||
<span class="token keyword">private</span> <span class="token keyword">final</span> <span class="token class-name">ClassLoader</span> loader<span class="token punctuation">;</span>
|
||||
<span class="token keyword">private</span> <span class="token keyword">final</span> <span class="token class-name">Class</span><span class="token generics"><span class="token punctuation"><</span><span class="token operator">?</span><span class="token punctuation">></span></span> clazz<span class="token punctuation">;</span>
|
||||
@@ -13,4 +13,4 @@ import{_ as e,o as l,c as o,a as s,b as n,d as r,e as a,r as i}from"./app.524ecf
|
||||
|
||||
<span class="token comment">// getter/setter</span>
|
||||
<span class="token punctuation">}</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u8FD9\u91CC\u5217\u4E00\u4E2A\u8868\u683C\u6765\u8BF4\u660E\u4E0D\u540C\u53D8\u91CF\u7684\u542B\u4E49</p><table><thead><tr><th style="text-align:right;">\u53D8\u91CF\u540D</th><th style="text-align:left;">\u53D8\u91CF\u89E3\u91CA</th></tr></thead><tbody><tr><td style="text-align:right;">loader</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u7C7B\u6240\u5728\u7684 ClassLoader</td></tr><tr><td style="text-align:right;">clazz</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u7C7B\u7684 Class \u5F15\u7528</td></tr><tr><td style="text-align:right;">method</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u65B9\u6CD5\u53CD\u5C04\u5F15\u7528</td></tr><tr><td style="text-align:right;">target</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u7C7B\u7684\u5B9E\u4F8B</td></tr><tr><td style="text-align:right;">params</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u53C2\u6570\u5217\u8868\uFF0C\u8FD9\u662F\u4E00\u4E2A\u6570\u7EC4\uFF0C\u5982\u679C\u65B9\u6CD5\u662F\u65E0\u53C2\u65B9\u6CD5\u5219\u4E3A\u7A7A\u6570\u7EC4</td></tr><tr><td style="text-align:right;">returnObj</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u3002\u5F53\u4E14\u4EC5\u5F53 <code>isReturn==true</code> \u6210\u7ACB\u65F6\u5019\u6709\u6548\uFF0C\u8868\u660E\u65B9\u6CD5\u8C03\u7528\u662F\u4EE5\u6B63\u5E38\u8FD4\u56DE\u7684\u65B9\u5F0F\u7ED3\u675F\u3002\u5982\u679C\u5F53\u524D\u65B9\u6CD5\u65E0\u8FD4\u56DE\u503C <code>void</code>\uFF0C\u5219\u503C\u4E3A null</td></tr><tr><td style="text-align:right;">throwExp</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u629B\u51FA\u7684\u5F02\u5E38\u3002\u5F53\u4E14\u4EC5\u5F53 <code>isThrow==true</code> \u6210\u7ACB\u65F6\u6709\u6548\uFF0C\u8868\u660E\u65B9\u6CD5\u8C03\u7528\u662F\u4EE5\u629B\u51FA\u5F02\u5E38\u7684\u65B9\u5F0F\u7ED3\u675F\u3002</td></tr><tr><td style="text-align:right;">isBefore</td><td style="text-align:left;">\u8F85\u52A9\u5224\u65AD\u6807\u8BB0\uFF0C\u5F53\u524D\u7684\u901A\u77E5\u8282\u70B9\u6709\u53EF\u80FD\u662F\u5728\u65B9\u6CD5\u4E00\u5F00\u59CB\u5C31\u901A\u77E5\uFF0C\u6B64\u65F6 <code>isBefore==true</code> \u6210\u7ACB\uFF0C\u540C\u65F6 <code>isThrow==false</code> \u548C <code>isReturn==false</code>\uFF0C\u56E0\u4E3A\u5728\u65B9\u6CD5\u521A\u5F00\u59CB\u65F6\uFF0C\u8FD8\u65E0\u6CD5\u786E\u5B9A\u65B9\u6CD5\u8C03\u7528\u5C06\u4F1A\u5982\u4F55\u7ED3\u675F\u3002</td></tr><tr><td style="text-align:right;">isThrow</td><td style="text-align:left;">\u8F85\u52A9\u5224\u65AD\u6807\u8BB0\uFF0C\u5F53\u524D\u7684\u65B9\u6CD5\u8C03\u7528\u4EE5\u629B\u5F02\u5E38\u7684\u5F62\u5F0F\u7ED3\u675F\u3002</td></tr><tr><td style="text-align:right;">isReturn</td><td style="text-align:left;">\u8F85\u52A9\u5224\u65AD\u6807\u8BB0\uFF0C\u5F53\u524D\u7684\u65B9\u6CD5\u8C03\u7528\u4EE5\u6B63\u5E38\u8FD4\u56DE\u7684\u5F62\u5F0F\u7ED3\u675F\u3002</td></tr></tbody></table><p>\u6240\u6709\u53D8\u91CF\u90FD\u53EF\u4EE5\u5728\u8868\u8FBE\u5F0F\u4E2D\u76F4\u63A5\u4F7F\u7528\uFF0C\u5982\u679C\u5728\u8868\u8FBE\u5F0F\u4E2D\u7F16\u5199\u4E86\u4E0D\u7B26\u5408 OGNL \u811A\u672C\u8BED\u6CD5\u6216\u8005\u5F15\u5165\u4E86\u4E0D\u5728\u8868\u683C\u4E2D\u7684\u53D8\u91CF\uFF0C\u5219\u9000\u51FA\u547D\u4EE4\u7684\u6267\u884C\uFF1B\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5F53\u524D\u7684\u5F02\u5E38\u4FE1\u606F\u4FEE\u6B63<code>\u6761\u4EF6\u8868\u8FBE\u5F0F</code>\u6216<code>\u89C2\u5BDF\u8868\u8FBE\u5F0F</code></p>`,7),p=a("\u7279\u6B8A\u7528\u6CD5\u8BF7\u53C2\u8003\uFF1A"),k={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},u=a("https://github.com/alibaba/arthas/issues/71"),h=a("OGNL \u8868\u8FBE\u5F0F\u5B98\u7F51\uFF1A"),g={href:"https://commons.apache.org/dormant/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},v=a("https://commons.apache.org/dormant/commons-ognl/language-guide.html");function m(y,b){const t=i("ExternalLinkIcon");return l(),o("div",null,[d,s("ul",null,[s("li",null,[p,s("a",k,[u,n(t)])]),s("li",null,[h,s("a",g,[v,n(t)])])])])}const w=e(c,[["render",m],["__file","advice-class.html.vue"]]);export{w as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u8FD9\u91CC\u5217\u4E00\u4E2A\u8868\u683C\u6765\u8BF4\u660E\u4E0D\u540C\u53D8\u91CF\u7684\u542B\u4E49</p><table><thead><tr><th style="text-align:right;">\u53D8\u91CF\u540D</th><th style="text-align:left;">\u53D8\u91CF\u89E3\u91CA</th></tr></thead><tbody><tr><td style="text-align:right;">loader</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u7C7B\u6240\u5728\u7684 ClassLoader</td></tr><tr><td style="text-align:right;">clazz</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u7C7B\u7684 Class \u5F15\u7528</td></tr><tr><td style="text-align:right;">method</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u65B9\u6CD5\u53CD\u5C04\u5F15\u7528</td></tr><tr><td style="text-align:right;">target</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u7C7B\u7684\u5B9E\u4F8B</td></tr><tr><td style="text-align:right;">params</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u53C2\u6570\u5217\u8868\uFF0C\u8FD9\u662F\u4E00\u4E2A\u6570\u7EC4\uFF0C\u5982\u679C\u65B9\u6CD5\u662F\u65E0\u53C2\u65B9\u6CD5\u5219\u4E3A\u7A7A\u6570\u7EC4</td></tr><tr><td style="text-align:right;">returnObj</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u3002\u5F53\u4E14\u4EC5\u5F53 <code>isReturn==true</code> \u6210\u7ACB\u65F6\u5019\u6709\u6548\uFF0C\u8868\u660E\u65B9\u6CD5\u8C03\u7528\u662F\u4EE5\u6B63\u5E38\u8FD4\u56DE\u7684\u65B9\u5F0F\u7ED3\u675F\u3002\u5982\u679C\u5F53\u524D\u65B9\u6CD5\u65E0\u8FD4\u56DE\u503C <code>void</code>\uFF0C\u5219\u503C\u4E3A null</td></tr><tr><td style="text-align:right;">throwExp</td><td style="text-align:left;">\u672C\u6B21\u8C03\u7528\u629B\u51FA\u7684\u5F02\u5E38\u3002\u5F53\u4E14\u4EC5\u5F53 <code>isThrow==true</code> \u6210\u7ACB\u65F6\u6709\u6548\uFF0C\u8868\u660E\u65B9\u6CD5\u8C03\u7528\u662F\u4EE5\u629B\u51FA\u5F02\u5E38\u7684\u65B9\u5F0F\u7ED3\u675F\u3002</td></tr><tr><td style="text-align:right;">isBefore</td><td style="text-align:left;">\u8F85\u52A9\u5224\u65AD\u6807\u8BB0\uFF0C\u5F53\u524D\u7684\u901A\u77E5\u8282\u70B9\u6709\u53EF\u80FD\u662F\u5728\u65B9\u6CD5\u4E00\u5F00\u59CB\u5C31\u901A\u77E5\uFF0C\u6B64\u65F6 <code>isBefore==true</code> \u6210\u7ACB\uFF0C\u540C\u65F6 <code>isThrow==false</code> \u548C <code>isReturn==false</code>\uFF0C\u56E0\u4E3A\u5728\u65B9\u6CD5\u521A\u5F00\u59CB\u65F6\uFF0C\u8FD8\u65E0\u6CD5\u786E\u5B9A\u65B9\u6CD5\u8C03\u7528\u5C06\u4F1A\u5982\u4F55\u7ED3\u675F\u3002</td></tr><tr><td style="text-align:right;">isThrow</td><td style="text-align:left;">\u8F85\u52A9\u5224\u65AD\u6807\u8BB0\uFF0C\u5F53\u524D\u7684\u65B9\u6CD5\u8C03\u7528\u4EE5\u629B\u5F02\u5E38\u7684\u5F62\u5F0F\u7ED3\u675F\u3002</td></tr><tr><td style="text-align:right;">isReturn</td><td style="text-align:left;">\u8F85\u52A9\u5224\u65AD\u6807\u8BB0\uFF0C\u5F53\u524D\u7684\u65B9\u6CD5\u8C03\u7528\u4EE5\u6B63\u5E38\u8FD4\u56DE\u7684\u5F62\u5F0F\u7ED3\u675F\u3002</td></tr></tbody></table><p>\u6240\u6709\u53D8\u91CF\u90FD\u53EF\u4EE5\u5728\u8868\u8FBE\u5F0F\u4E2D\u76F4\u63A5\u4F7F\u7528\uFF0C\u5982\u679C\u5728\u8868\u8FBE\u5F0F\u4E2D\u7F16\u5199\u4E86\u4E0D\u7B26\u5408 OGNL \u811A\u672C\u8BED\u6CD5\u6216\u8005\u5F15\u5165\u4E86\u4E0D\u5728\u8868\u683C\u4E2D\u7684\u53D8\u91CF\uFF0C\u5219\u9000\u51FA\u547D\u4EE4\u7684\u6267\u884C\uFF1B\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5F53\u524D\u7684\u5F02\u5E38\u4FE1\u606F\u4FEE\u6B63<code>\u6761\u4EF6\u8868\u8FBE\u5F0F</code>\u6216<code>\u89C2\u5BDF\u8868\u8FBE\u5F0F</code></p>`,7),k=c("OGNL \u590D\u6742\u8868\u8FBE\u5F0F\u4F7F\u7528\u6280\u5DE7");function u(v,y){const a=i("RouterLink");return n(),e("div",null,[r,s("ul",null,[s("li",null,[l(a,{to:"/doc/ognl-express.html"},{default:o(()=>[k]),_:1})])])])}const h=t(p,[["render",u],["__file","advice-class.html.vue"]]);export{h as default};
|
||||
@@ -1,2 +1,2 @@
|
||||
import{_ as s,o,c as n,a as e,b as r,w as c,d,e as a,r as i}from"./app.524ecf5c.js";const l={},h=d(`<h1 id="\u4EE5-java-agent-\u7684\u65B9\u5F0F\u542F\u52A8" tabindex="-1"><a class="header-anchor" href="#\u4EE5-java-agent-\u7684\u65B9\u5F0F\u542F\u52A8" aria-hidden="true">#</a> \u4EE5 Java Agent \u7684\u65B9\u5F0F\u542F\u52A8</h1><p>\u901A\u5E38 Arthas \u662F\u4EE5\u52A8\u6001 attach \u7684\u65B9\u5F0F\u6765\u8BCA\u65AD\u5E94\u7528\uFF0C\u4F46\u4ECE<code>3.2.0</code>\u7248\u672C\u8D77\uFF0CArthas \u652F\u6301\u76F4\u63A5\u4EE5 java agent \u7684\u65B9\u5F0F\u542F\u52A8\u3002</p><p>\u6BD4\u5982\u4E0B\u8F7D\u5168\u91CF\u7684 arthas zip \u5305\uFF0C\u89E3\u538B\u4E4B\u540E\u4EE5 <code>-javaagent</code> \u7684\u53C2\u6570\u6307\u5B9A<code>arthas-agent.jar</code>\u6765\u542F\u52A8\uFF1A</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>java -javaagent:/tmp/test/arthas-agent.jar -jar math-game.jar
|
||||
import{_ as s,o,c as n,a as e,b as r,w as c,d,e as a,r as i}from"./app.e2427bec.js";const l={},h=d(`<h1 id="\u4EE5-java-agent-\u7684\u65B9\u5F0F\u542F\u52A8" tabindex="-1"><a class="header-anchor" href="#\u4EE5-java-agent-\u7684\u65B9\u5F0F\u542F\u52A8" aria-hidden="true">#</a> \u4EE5 Java Agent \u7684\u65B9\u5F0F\u542F\u52A8</h1><p>\u901A\u5E38 Arthas \u662F\u4EE5\u52A8\u6001 attach \u7684\u65B9\u5F0F\u6765\u8BCA\u65AD\u5E94\u7528\uFF0C\u4F46\u4ECE<code>3.2.0</code>\u7248\u672C\u8D77\uFF0CArthas \u652F\u6301\u76F4\u63A5\u4EE5 java agent \u7684\u65B9\u5F0F\u542F\u52A8\u3002</p><p>\u6BD4\u5982\u4E0B\u8F7D\u5168\u91CF\u7684 arthas zip \u5305\uFF0C\u89E3\u538B\u4E4B\u540E\u4EE5 <code>-javaagent</code> \u7684\u53C2\u6570\u6307\u5B9A<code>arthas-agent.jar</code>\u6765\u542F\u52A8\uFF1A</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>java -javaagent:/tmp/test/arthas-agent.jar -jar math-game.jar
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,4),_=a("\u9ED8\u8BA4\u7684\u914D\u7F6E\u9879\u5728\u89E3\u538B\u76EE\u5F55\u91CC\u7684"),p=e("code",null,"arthas.properties",-1),m=a("\u6587\u4EF6\u91CC\u3002\u53C2\u8003\uFF1A"),u=a("Arthas Properties"),v=e("p",null,"Java Agent \u673A\u5236\u53C2\u8003\uFF1A https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html",-1);function g(j,x){const t=i("RouterLink");return o(),n("div",null,[h,e("p",null,[_,p,m,r(t,{to:"/doc/arthas-properties.html"},{default:c(()=>[u]),_:1})]),v])}const b=s(l,[["render",g],["__file","agent.html.vue"]]);export{b as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-37178538","path":"/doc/agent.html","title":"\u4EE5 Java Agent \u7684\u65B9\u5F0F\u542F\u52A8","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/agent.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-37178538","path":"/doc/agent.html","title":"\u4EE5 Java Agent \u7684\u65B9\u5F0F\u542F\u52A8","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/agent.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-f6b5c310","path":"/en/doc/agent.html","title":"Start as a Java Agent","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/agent.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-f6b5c310","path":"/en/doc/agent.html","title":"Start as a Java Agent","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/agent.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,2 +1,2 @@
|
||||
import{_ as s,o as r,c as n,a as e,b as o,w as c,d as i,e as a,r as d}from"./app.524ecf5c.js";const l={},h=i(`<h1 id="start-as-a-java-agent" tabindex="-1"><a class="header-anchor" href="#start-as-a-java-agent" aria-hidden="true">#</a> Start as a Java Agent</h1><p>Usually Arthas dynamic attach the applications on the fly, but from version <code>3.2.0</code> onwards, Arthas supports starting directly as a java agent.</p><p>For example, download the full arthas zip package, decompress it and start it by specifying <code>arthas-agent.jar</code> with the parameter <code>-javaagent</code>.</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>java -javaagent:/tmp/test/arthas-agent.jar -jar math-game.jar
|
||||
import{_ as s,o as r,c as n,a as e,b as o,w as c,d as i,e as a,r as d}from"./app.e2427bec.js";const l={},h=i(`<h1 id="start-as-a-java-agent" tabindex="-1"><a class="header-anchor" href="#start-as-a-java-agent" aria-hidden="true">#</a> Start as a Java Agent</h1><p>Usually Arthas dynamic attach the applications on the fly, but from version <code>3.2.0</code> onwards, Arthas supports starting directly as a java agent.</p><p>For example, download the full arthas zip package, decompress it and start it by specifying <code>arthas-agent.jar</code> with the parameter <code>-javaagent</code>.</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>java -javaagent:/tmp/test/arthas-agent.jar -jar math-game.jar
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,4),p=a("The default configuration is in the "),m=e("code",null,"arthas.properties",-1),_=a(" file in the decompression directory. Reference: "),u=a("Arthas Properties"),g=e("p",null,"Reference: https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html",-1);function v(f,j){const t=d("RouterLink");return r(),n("div",null,[h,e("p",null,[p,m,_,o(t,{to:"/en/doc/arthas-properties.html"},{default:c(()=>[u]),_:1})]),g])}const y=s(l,[["render",v],["__file","agent.html.vue"]]);export{y as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-7a0f16ad","path":"/en/doc/ai.html","title":"AI Integration","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"MCP Server","slug":"mcp-server","link":"#mcp-server","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/ai.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-7a0f16ad","path":"/en/doc/ai.html","title":"AI Integration","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"MCP Server","slug":"mcp-server","link":"#mcp-server","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/ai.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as r,o as s,c as o,a as e,b as n,w as c,e as t,r as i}from"./app.524ecf5c.js";const _={},d=e("h1",{id:"ai-\u76F8\u5173",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#ai-\u76F8\u5173","aria-hidden":"true"},"#"),t(" AI \u76F8\u5173")],-1),h=e("p",null,"Arthas \u53EF\u4EE5\u901A\u8FC7 MCP Server \u63A5\u5165 AI \u52A9\u624B\uFF0C\u8BA9 AI \u5BA2\u6237\u7AEF\u4EE5\u5DE5\u5177\u8C03\u7528\u7684\u65B9\u5F0F\u6267\u884C Arthas \u8BCA\u65AD\u547D\u4EE4\uFF0C\u9002\u5408\u7ED3\u5408 Java \u5E94\u7528\u6392\u969C\u3001\u8FD0\u884C\u65F6\u5206\u6790\u548C\u81EA\u52A8\u5316\u8BCA\u65AD\u573A\u666F\u4F7F\u7528\u3002",-1),l=e("h2",{id:"mcp-server",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#mcp-server","aria-hidden":"true"},"#"),t(" MCP Server")],-1),u=t("Arthas MCP Server"),m=t("\uFF1A\u4E86\u89E3\u5982\u4F55\u542F\u7528 MCP \u670D\u52A1\u3001\u914D\u7F6E AI \u5BA2\u6237\u7AEF\u3001\u4F7F\u7528 Streamable HTTP \u4F20\u8F93\u6A21\u5F0F\u4EE5\u53CA\u67E5\u770B\u652F\u6301\u7684\u8BCA\u65AD\u5DE5\u5177\u3002");function f(p,v){const a=i("RouterLink");return s(),o("div",null,[d,h,l,e("ul",null,[e("li",null,[n(a,{to:"/doc/mcp-server.html"},{default:c(()=>[u]),_:1}),m])])])}const A=r(_,[["render",f],["__file","ai.html.vue"]]);export{A as default};
|
||||
import{_ as r,o as s,c as o,a as e,b as n,w as c,e as t,r as i}from"./app.e2427bec.js";const _={},d=e("h1",{id:"ai-\u76F8\u5173",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#ai-\u76F8\u5173","aria-hidden":"true"},"#"),t(" AI \u76F8\u5173")],-1),h=e("p",null,"Arthas \u53EF\u4EE5\u901A\u8FC7 MCP Server \u63A5\u5165 AI \u52A9\u624B\uFF0C\u8BA9 AI \u5BA2\u6237\u7AEF\u4EE5\u5DE5\u5177\u8C03\u7528\u7684\u65B9\u5F0F\u6267\u884C Arthas \u8BCA\u65AD\u547D\u4EE4\uFF0C\u9002\u5408\u7ED3\u5408 Java \u5E94\u7528\u6392\u969C\u3001\u8FD0\u884C\u65F6\u5206\u6790\u548C\u81EA\u52A8\u5316\u8BCA\u65AD\u573A\u666F\u4F7F\u7528\u3002",-1),l=e("h2",{id:"mcp-server",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#mcp-server","aria-hidden":"true"},"#"),t(" MCP Server")],-1),u=t("Arthas MCP Server"),m=t("\uFF1A\u4E86\u89E3\u5982\u4F55\u542F\u7528 MCP \u670D\u52A1\u3001\u914D\u7F6E AI \u5BA2\u6237\u7AEF\u3001\u4F7F\u7528 Streamable HTTP \u4F20\u8F93\u6A21\u5F0F\u4EE5\u53CA\u67E5\u770B\u652F\u6301\u7684\u8BCA\u65AD\u5DE5\u5177\u3002");function f(p,v){const a=i("RouterLink");return s(),o("div",null,[d,h,l,e("ul",null,[e("li",null,[n(a,{to:"/doc/mcp-server.html"},{default:c(()=>[u]),_:1}),m])])])}const A=r(_,[["render",f],["__file","ai.html.vue"]]);export{A as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-71d23f41","path":"/doc/ai.html","title":"AI \u76F8\u5173","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"MCP Server","slug":"mcp-server","link":"#mcp-server","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/ai.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-71d23f41","path":"/doc/ai.html","title":"AI \u76F8\u5173","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"MCP Server","slug":"mcp-server","link":"#mcp-server","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/ai.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as s,o,c as n,a as e,b as r,w as i,e as t,r as c}from"./app.524ecf5c.js";const l={},d=e("h1",{id:"ai-integration",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#ai-integration","aria-hidden":"true"},"#"),t(" AI Integration")],-1),h=e("p",null,"Arthas can integrate with AI assistants through MCP Server, allowing AI clients to execute Arthas diagnostic commands as tool calls. This is useful for Java troubleshooting, runtime analysis, and automated diagnostics.",-1),_=e("h2",{id:"mcp-server",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#mcp-server","aria-hidden":"true"},"#"),t(" MCP Server")],-1),u=t("Arthas MCP Server"),m=t(": Learn how to enable the MCP service, configure AI clients, use Streamable HTTP transport, and view supported diagnostic tools.");function f(p,v){const a=c("RouterLink");return o(),n("div",null,[d,h,_,e("ul",null,[e("li",null,[r(a,{to:"/en/doc/mcp-server.html"},{default:i(()=>[u]),_:1}),m])])])}const x=s(l,[["render",f],["__file","ai.html.vue"]]);export{x as default};
|
||||
import{_ as s,o,c as n,a as e,b as r,w as i,e as t,r as c}from"./app.e2427bec.js";const l={},d=e("h1",{id:"ai-integration",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#ai-integration","aria-hidden":"true"},"#"),t(" AI Integration")],-1),h=e("p",null,"Arthas can integrate with AI assistants through MCP Server, allowing AI clients to execute Arthas diagnostic commands as tool calls. This is useful for Java troubleshooting, runtime analysis, and automated diagnostics.",-1),_=e("h2",{id:"mcp-server",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#mcp-server","aria-hidden":"true"},"#"),t(" MCP Server")],-1),u=t("Arthas MCP Server"),m=t(": Learn how to enable the MCP service, configure AI clients, use Streamable HTTP transport, and view supported diagnostic tools.");function f(p,v){const a=c("RouterLink");return o(),n("div",null,[d,h,_,e("ul",null,[e("li",null,[r(a,{to:"/en/doc/mcp-server.html"},{default:i(()=>[u]),_:1}),m])])])}const x=s(l,[["render",f],["__file","ai.html.vue"]]);export{x as default};
|
||||
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-5c517900","path":"/doc/arthas-properties.html","title":"Arthas Properties","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u652F\u6301\u7684\u914D\u7F6E\u9879","slug":"\u652F\u6301\u7684\u914D\u7F6E\u9879","link":"#\u652F\u6301\u7684\u914D\u7F6E\u9879","children":[{"level":3,"title":"\u7981\u6B62\u6307\u5B9A\u547D\u4EE4","slug":"\u7981\u6B62\u6307\u5B9A\u547D\u4EE4","link":"#\u7981\u6B62\u6307\u5B9A\u547D\u4EE4","children":[]},{"level":3,"title":"\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","slug":"\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","link":"#\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","children":[]}]},{"level":2,"title":"\u914D\u7F6E\u7684\u4F18\u5148\u7EA7","slug":"\u914D\u7F6E\u7684\u4F18\u5148\u7EA7","link":"#\u914D\u7F6E\u7684\u4F18\u5148\u7EA7","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/arthas-properties.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-5c517900","path":"/doc/arthas-properties.html","title":"Arthas Properties","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u652F\u6301\u7684\u914D\u7F6E\u9879","slug":"\u652F\u6301\u7684\u914D\u7F6E\u9879","link":"#\u652F\u6301\u7684\u914D\u7F6E\u9879","children":[{"level":3,"title":"\u7981\u6B62\u6307\u5B9A\u547D\u4EE4","slug":"\u7981\u6B62\u6307\u5B9A\u547D\u4EE4","link":"#\u7981\u6B62\u6307\u5B9A\u547D\u4EE4","children":[]},{"level":3,"title":"\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","slug":"\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","link":"#\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","children":[]}]},{"level":2,"title":"\u914D\u7F6E\u7684\u4F18\u5148\u7EA7","slug":"\u914D\u7F6E\u7684\u4F18\u5148\u7EA7","link":"#\u914D\u7F6E\u7684\u4F18\u5148\u7EA7","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/arthas-properties.md","version":"4.3.5"}');export{e as data};
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import{_ as s,o,c as r,a as d,b as i,w as c,d as a,e,r as n}from"./app.524ecf5c.js";const l={},h=a(`<h1 id="arthas-properties" tabindex="-1"><a class="header-anchor" href="#arthas-properties" aria-hidden="true">#</a> Arthas Properties</h1><p><code>arthas.properties</code>\u6587\u4EF6\u5728 arthas \u7684\u76EE\u5F55\u4E0B\u3002</p><ul><li>\u5982\u679C\u662F\u81EA\u52A8\u4E0B\u8F7D\u7684 arthas\uFF0C\u5219\u76EE\u5F55\u5728<code>~/.arthas/lib/3.x.x/arthas/</code>\u4E0B\u9762</li><li>\u5982\u679C\u662F\u4E0B\u8F7D\u7684\u5B8C\u6574\u5305\uFF0C\u5728 arthas \u89E3\u538B\u76EE\u5F55\u4E0B</li></ul><h2 id="\u652F\u6301\u7684\u914D\u7F6E\u9879" tabindex="-1"><a class="header-anchor" href="#\u652F\u6301\u7684\u914D\u7F6E\u9879" aria-hidden="true">#</a> \u652F\u6301\u7684\u914D\u7F6E\u9879</h2><div class="custom-container warning"><p class="custom-container-title">\u6CE8\u610F</p><p>\u6CE8\u610F\u914D\u7F6E\u5FC5\u987B\u662F<code>\u9A7C\u5CF0</code>\u7684\uFF0C\u548C spring boot \u7684<code>-</code>\u98CE\u683C\u4E0D\u4E00\u6837\u3002spring boot \u5E94\u7528\u624D\u540C\u65F6\u652F\u6301<code>\u9A7C\u5CF0</code> \u548C <code>-</code>\u98CE\u683C\u7684\u914D\u7F6E\u3002</p></div><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>#arthas.config.overrideAll=true
|
||||
import{_ as s,o,c as r,a as d,b as i,w as c,d as a,e,r as n}from"./app.e2427bec.js";const l={},h=a(`<h1 id="arthas-properties" tabindex="-1"><a class="header-anchor" href="#arthas-properties" aria-hidden="true">#</a> Arthas Properties</h1><p><code>arthas.properties</code>\u6587\u4EF6\u5728 arthas \u7684\u76EE\u5F55\u4E0B\u3002</p><ul><li>\u5982\u679C\u662F\u81EA\u52A8\u4E0B\u8F7D\u7684 arthas\uFF0C\u5219\u76EE\u5F55\u5728<code>~/.arthas/lib/3.x.x/arthas/</code>\u4E0B\u9762</li><li>\u5982\u679C\u662F\u4E0B\u8F7D\u7684\u5B8C\u6574\u5305\uFF0C\u5728 arthas \u89E3\u538B\u76EE\u5F55\u4E0B</li></ul><h2 id="\u652F\u6301\u7684\u914D\u7F6E\u9879" tabindex="-1"><a class="header-anchor" href="#\u652F\u6301\u7684\u914D\u7F6E\u9879" aria-hidden="true">#</a> \u652F\u6301\u7684\u914D\u7F6E\u9879</h2><div class="custom-container warning"><p class="custom-container-title">\u6CE8\u610F</p><p>\u6CE8\u610F\u914D\u7F6E\u5FC5\u987B\u662F<code>\u9A7C\u5CF0</code>\u7684\uFF0C\u548C spring boot \u7684<code>-</code>\u98CE\u683C\u4E0D\u4E00\u6837\u3002spring boot \u5E94\u7528\u624D\u540C\u65F6\u652F\u6301<code>\u9A7C\u5CF0</code> \u548C <code>-</code>\u98CE\u683C\u7684\u914D\u7F6E\u3002</p></div><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>#arthas.config.overrideAll=true
|
||||
arthas.telnetPort=3658
|
||||
arthas.httpPort=8563
|
||||
arthas.ip=127.0.0.1
|
||||
+1
-1
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-74fb2694","path":"/en/doc/arthas-properties.html","title":"Arthas Properties","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Supported configuration items","slug":"supported-configuration-items","link":"#supported-configuration-items","children":[{"level":3,"title":"disable specify commands","slug":"disable-specify-commands","link":"#disable-specify-commands","children":[]},{"level":3,"title":"Load external commands","slug":"load-external-commands","link":"#load-external-commands","children":[]}]},{"level":2,"title":"Configured order","slug":"configured-order","link":"#configured-order","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/arthas-properties.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-74fb2694","path":"/en/doc/arthas-properties.html","title":"Arthas Properties","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Supported configuration items","slug":"supported-configuration-items","link":"#supported-configuration-items","children":[{"level":3,"title":"disable specify commands","slug":"disable-specify-commands","link":"#disable-specify-commands","children":[]},{"level":3,"title":"Load external commands","slug":"load-external-commands","link":"#load-external-commands","children":[]}]},{"level":2,"title":"Configured order","slug":"configured-order","link":"#configured-order","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/arthas-properties.md","version":"4.3.5"}');export{e as data};
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import{_ as o,o as r,c as s,a as i,b as n,w as d,d as a,e,r as c}from"./app.524ecf5c.js";const l={},m=a(`<h1 id="arthas-properties" tabindex="-1"><a class="header-anchor" href="#arthas-properties" aria-hidden="true">#</a> Arthas Properties</h1><p>The <code>arthas.properties</code> file is in the arthas directory.</p><ul><li>If it is automatically downloaded arthas, the directory is under <code>~/.arthas/lib/3.x.x/arthas/</code></li><li>If it is a downloaded complete package, under the decompression directory of arthas</li></ul><h2 id="supported-configuration-items" tabindex="-1"><a class="header-anchor" href="#supported-configuration-items" aria-hidden="true">#</a> Supported configuration items</h2><div class="custom-container warning"><p class="custom-container-title">WARNING</p><p>Note that the configuration must be <code>camel case</code>, which is different from the <code>-</code> style of spring boot. Only the spring boot application supports both <code>camel case</code> and <code>-</code> style configuration.</p></div><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>#arthas.config.overrideAll=true
|
||||
import{_ as o,o as r,c as s,a as i,b as n,w as d,d as a,e,r as c}from"./app.e2427bec.js";const l={},m=a(`<h1 id="arthas-properties" tabindex="-1"><a class="header-anchor" href="#arthas-properties" aria-hidden="true">#</a> Arthas Properties</h1><p>The <code>arthas.properties</code> file is in the arthas directory.</p><ul><li>If it is automatically downloaded arthas, the directory is under <code>~/.arthas/lib/3.x.x/arthas/</code></li><li>If it is a downloaded complete package, under the decompression directory of arthas</li></ul><h2 id="supported-configuration-items" tabindex="-1"><a class="header-anchor" href="#supported-configuration-items" aria-hidden="true">#</a> Supported configuration items</h2><div class="custom-container warning"><p class="custom-container-title">WARNING</p><p>Note that the configuration must be <code>camel case</code>, which is different from the <code>-</code> style of spring boot. Only the spring boot application supports both <code>camel case</code> and <code>-</code> style configuration.</p></div><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>#arthas.config.overrideAll=true
|
||||
arthas.telnetPort=3658
|
||||
arthas.httpPort=8563
|
||||
arthas.ip=127.0.0.1
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-02eb6d0d","path":"/doc/arthas3.html","title":"","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"Arthas3.0 \u7684\u65B0\u7279\u6027","slug":"arthas3-0-\u7684\u65B0\u7279\u6027","link":"#arthas3-0-\u7684\u65B0\u7279\u6027","children":[]},{"level":3,"title":"\u53BB groovy \u4F9D\u8D56","slug":"\u53BB-groovy-\u4F9D\u8D56","link":"#\u53BB-groovy-\u4F9D\u8D56","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/arthas3.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-02eb6d0d","path":"/doc/arthas3.html","title":"","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"Arthas3.0 \u7684\u65B0\u7279\u6027","slug":"arthas3-0-\u7684\u65B0\u7279\u6027","link":"#arthas3-0-\u7684\u65B0\u7279\u6027","children":[]},{"level":3,"title":"\u53BB groovy \u4F9D\u8D56","slug":"\u53BB-groovy-\u4F9D\u8D56","link":"#\u53BB-groovy-\u4F9D\u8D56","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/arthas3.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as r,o as i,c as t,a as e,b as d,d as a,e as s,r as l}from"./app.524ecf5c.js";const o={},c=a(`<h3 id="arthas3-0-\u7684\u65B0\u7279\u6027" tabindex="-1"><a class="header-anchor" href="#arthas3-0-\u7684\u65B0\u7279\u6027" aria-hidden="true">#</a> Arthas3.0 \u7684\u65B0\u7279\u6027</h3><h4 id="\u5728\u7EBF\u8BCA\u65AD\u529F\u80FD" tabindex="-1"><a class="header-anchor" href="#\u5728\u7EBF\u8BCA\u65AD\u529F\u80FD" aria-hidden="true">#</a> \u5728\u7EBF\u8BCA\u65AD\u529F\u80FD</h4><p>Arthas3.0 \u4E2D\u6700\u91CD\u8981\u7684\u7279\u6027\uFF0C\u4E0D\u9700\u8981\u767B\u5F55\u673A\u5668\u5C31\u53EF\u4EE5\u5BF9\u5E94\u7528\u8FDB\u884C\u8BCA\u65AD\uFF0C\u4F53\u9A8C\u548C\u672C\u5730\u8BCA\u65AD\u5B8C\u5168\u4E00\u81F4</p><h5 id="\u4F7F\u7528\u6B65\u9AA4" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u6B65\u9AA4" aria-hidden="true">#</a> \u4F7F\u7528\u6B65\u9AA4</h5><p>TODO</p><h5 id="\u52A8\u56FE\u6F14\u793A" tabindex="-1"><a class="header-anchor" href="#\u52A8\u56FE\u6F14\u793A" aria-hidden="true">#</a> \u52A8\u56FE\u6F14\u793A</h5><p>TODO</p><h4 id="\u7BA1\u9053\u652F\u6301" tabindex="-1"><a class="header-anchor" href="#\u7BA1\u9053\u652F\u6301" aria-hidden="true">#</a> \u7BA1\u9053\u652F\u6301</h4><p>Arthas 3.0 \u5F00\u59CB\u652F\u6301\u7BA1\u9053, \u7387\u5148\u63D0\u4F9B\u4E86<code>grep</code>,<code>wc</code>,<code>plaintext</code>\u7684\u652F\u6301\u3002</p><h3 id="\u53BB-groovy-\u4F9D\u8D56" tabindex="-1"><a class="header-anchor" href="#\u53BB-groovy-\u4F9D\u8D56" aria-hidden="true">#</a> \u53BB groovy \u4F9D\u8D56</h3><p>groovy \u8868\u8FBE\u5F0F\u5728 arthas2.0 \u4E2D\u5927\u91CF\u4F7F\u7528\uFF0C\u4F8B\u5982 watch \u8868\u8FBE\u5F0F</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">watch</span> com.alibaba.sample.petstore.web.store.module.screen.ItemList <span class="token function">add</span> <span class="token string">"params + ' ' + returnObj"</span> params.size<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">==</span><span class="token number">2</span>
|
||||
import{_ as r,o as i,c as t,a as e,b as d,d as a,e as s,r as l}from"./app.e2427bec.js";const o={},c=a(`<h3 id="arthas3-0-\u7684\u65B0\u7279\u6027" tabindex="-1"><a class="header-anchor" href="#arthas3-0-\u7684\u65B0\u7279\u6027" aria-hidden="true">#</a> Arthas3.0 \u7684\u65B0\u7279\u6027</h3><h4 id="\u5728\u7EBF\u8BCA\u65AD\u529F\u80FD" tabindex="-1"><a class="header-anchor" href="#\u5728\u7EBF\u8BCA\u65AD\u529F\u80FD" aria-hidden="true">#</a> \u5728\u7EBF\u8BCA\u65AD\u529F\u80FD</h4><p>Arthas3.0 \u4E2D\u6700\u91CD\u8981\u7684\u7279\u6027\uFF0C\u4E0D\u9700\u8981\u767B\u5F55\u673A\u5668\u5C31\u53EF\u4EE5\u5BF9\u5E94\u7528\u8FDB\u884C\u8BCA\u65AD\uFF0C\u4F53\u9A8C\u548C\u672C\u5730\u8BCA\u65AD\u5B8C\u5168\u4E00\u81F4</p><h5 id="\u4F7F\u7528\u6B65\u9AA4" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u6B65\u9AA4" aria-hidden="true">#</a> \u4F7F\u7528\u6B65\u9AA4</h5><p>TODO</p><h5 id="\u52A8\u56FE\u6F14\u793A" tabindex="-1"><a class="header-anchor" href="#\u52A8\u56FE\u6F14\u793A" aria-hidden="true">#</a> \u52A8\u56FE\u6F14\u793A</h5><p>TODO</p><h4 id="\u7BA1\u9053\u652F\u6301" tabindex="-1"><a class="header-anchor" href="#\u7BA1\u9053\u652F\u6301" aria-hidden="true">#</a> \u7BA1\u9053\u652F\u6301</h4><p>Arthas 3.0 \u5F00\u59CB\u652F\u6301\u7BA1\u9053, \u7387\u5148\u63D0\u4F9B\u4E86<code>grep</code>,<code>wc</code>,<code>plaintext</code>\u7684\u652F\u6301\u3002</p><h3 id="\u53BB-groovy-\u4F9D\u8D56" tabindex="-1"><a class="header-anchor" href="#\u53BB-groovy-\u4F9D\u8D56" aria-hidden="true">#</a> \u53BB groovy \u4F9D\u8D56</h3><p>groovy \u8868\u8FBE\u5F0F\u5728 arthas2.0 \u4E2D\u5927\u91CF\u4F7F\u7528\uFF0C\u4F8B\u5982 watch \u8868\u8FBE\u5F0F</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">watch</span> com.alibaba.sample.petstore.web.store.module.screen.ItemList <span class="token function">add</span> <span class="token string">"params + ' ' + returnObj"</span> params.size<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">==</span><span class="token number">2</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u5176\u4E2D<code>"params + ' ' + returnObj"</code>\u4EE5\u53CA<code>params.size()==2</code>\u80CC\u540E\u5176\u5B9E\u90FD\u4F7F\u7528\u4E86 groovy \u6765\u8FDB\u884C\u8868\u8FBE\u5F0F\u6C42\u503C\uFF0C\u5982\u679C\u53CD\u590D\u5927\u91CF\u7684\u8FD0\u884C\u8FD9\u4E9B\u8868\u8FBE\u5F0F\uFF0Cgroovy \u4F1A\u521B\u5EFA\u5927\u91CF\u7684 classloader\uFF0C\u6253\u6EE1 perm \u533A\u4ECE\u800C\u89E6\u53D1 FGC\u3002</p><p>\u4E3A\u4E86\u907F\u514D\u8FD9\u4E2A\u95EE\u9898\uFF0CArthas 3.0 \u4E2D\u4F7F\u7528\u4E86 ognl \u8FD9\u4E2A\u66F4\u52A0\u8F7B\u91CF\u7684\u8868\u8FBE\u5F0F\u6C42\u503C\u5E93\u6765\u4EE3\u66FF groovy\uFF0C\u5F7B\u5E95\u89E3\u51B3\u4E86 groovy \u5F15\u8D77\u7684 FGC \u98CE\u9669\u3002\u4F46\u7531\u4E8E\u8FD9\u4E2A\u66FF\u6362\uFF0C\u5BFC\u81F4\u539F\u6765\u4F7F\u7528 groovy \u811A\u672C\u7F16\u5199\u7684\u81EA\u5B9A\u4E49\u811A\u672C\u5931\u6548\u3002\u8FD9\u4E2A\u95EE\u9898\u7559\u5F85\u540E\u7EED\u89E3\u51B3\u3002</p>`,14),v=s("\u5728 3.0 \u4E2D\uFF0Cwatch \u547D\u4EE4\u7684\u8868\u8FBE\u5F0F\u90E8\u5206\u7684\u4E66\u5199\u6709\u4E86\u4E00\u4E9B\u6539\u53D8\uFF0C\u8BE6\u89C1"),u={href:"https://arthas.aliyun.com/doc/watch",target:"_blank",rel:"noopener noreferrer"},m=s("\u8FD9\u91CC"),h=a(`<h4 id="\u63D0\u5347-rt-\u7EDF\u8BA1\u7CBE\u5EA6" tabindex="-1"><a class="header-anchor" href="#\u63D0\u5347-rt-\u7EDF\u8BA1\u7CBE\u5EA6" aria-hidden="true">#</a> \u63D0\u5347 rt \u7EDF\u8BA1\u7CBE\u5EA6</h4><p>Arthas 2.0 \u4E2D\uFF0C\u7EDF\u8BA1 rt \u90FD\u662F\u4EE5<code>ms</code>\u4E3A\u5355\u4F4D\uFF0C\u5BF9\u4E8E\u67D0\u4E9B\u6BD4\u8F83\u5C0F\u7684\u65B9\u6CD5\u8C03\u7528\uFF0C\u8017\u65F6\u5728\u6BEB\u79D2\u4EE5\u4E0B\u7684\u90FD\u4F1A\u88AB\u8BA4\u4E3A\u662F 0ms\uFF0C\u9020\u6210 trace \u603B\u65F6\u95F4\u548C\u5404\u65B9\u6CD5\u7684\u65F6\u95F4\u76F8\u52A0\u4E0D\u4E00\u81F4\u7B49\u95EE\u9898\uFF08\u867D\u7136\u8FD9\u91CC\u9762\u786E\u5B9E\u4F1A\u6709\u8BEF\u5DEE\uFF0C\u4E3B\u8981 Arthas \u81EA\u8EAB\u7684\u5F00\u9500\uFF09\u3002Arthas 3.0 \u4E2D\u6240\u6709 rt \u7684\u5355\u4F4D\u7EDF\u4E00\u6539\u4E3A\u4F7F\u7528<code>ns</code>\u6765\u7EDF\u8BA1\uFF0C\u7CBE\u51C6\u6355\u83B7\u4F60\u7684\u65B9\u6CD5\u8017\u65F6\uFF0C\u8BA9 0ms \u8FD9\u6837\u65E0\u610F\u4E49\u7684\u7EDF\u8BA1\u6570\u636E\u4E0D\u518D\u51FA\u73B0\uFF01</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ tt -l
|
||||
INDEX TIMESTAMP COST(ms) IS-RET IS-EXP OBJECT CLASS METHOD
|
||||
------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as o,o as s,c,a as e,b as a,e as t,d as i,r as d}from"./app.524ecf5c.js";const r={},l=e("h1",{id:"arthas-async-jobs",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#arthas-async-jobs","aria-hidden":"true"},"#"),t(" Arthas Async Jobs")],-1),u={href:"https://arthas.aliyun.com/doc/arthas-tutorials?language=en&id=case-async-jobs",target:"_blank",rel:"noopener noreferrer"},h=e("code",null,"Async Jobs",-1),p=t(" online tutorial"),b=t("Asynchronous jobs in arthas. The idea is borrowed from "),m={href:"http://man7.org/linux/man-pages/man1/jobs.1p.html",target:"_blank",rel:"noopener noreferrer"},g=t("linux jobs"),f=t("."),k=i(`<h2 id="_1-use-to-run-the-command-in-the-background" tabindex="-1"><a class="header-anchor" href="#_1-use-to-run-the-command-in-the-background" aria-hidden="true">#</a> 1. Use & to run the command in the background</h2><p>For example, execute the trace command in the background:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>trace Test t <span class="token operator">&</span>
|
||||
import{_ as a,o,c as s,a as e,b as c,e as t,d as i,r as d}from"./app.e2427bec.js";const r={},l=e("h1",{id:"arthas-async-jobs",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#arthas-async-jobs","aria-hidden":"true"},"#"),t(" Arthas Async Jobs")],-1),u=t("Asynchronous jobs in arthas. The idea is borrowed from "),h={href:"http://man7.org/linux/man-pages/man1/jobs.1p.html",target:"_blank",rel:"noopener noreferrer"},p=t("linux jobs"),b=t("."),m=i(`<h2 id="_1-use-to-run-the-command-in-the-background" tabindex="-1"><a class="header-anchor" href="#_1-use-to-run-the-command-in-the-background" aria-hidden="true">#</a> 1. Use & to run the command in the background</h2><p>For example, execute the trace command in the background:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>trace Test t <span class="token operator">&</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>By doing this, the current command is put to the background to run, you can continue to execute other commands in the console.</p><h2 id="_2-list-background-jobs" tabindex="-1"><a class="header-anchor" href="#_2-list-background-jobs" aria-hidden="true">#</a> 2. List background jobs</h2><p>If you want to list all background jobs, you can execute the <code>jobs</code> command and the results are as follows:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">jobs</span>
|
||||
<span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">]</span>*
|
||||
Stopped <span class="token function">watch</span> com.taobao.container.Test <span class="token builtin class-name">test</span> <span class="token string">"params[0].{? #this.name == null }"</span> <span class="token parameter variable">-x</span> <span class="token number">2</span>
|
||||
@@ -11,4 +11,4 @@ import{_ as o,o as s,c,a as e,b as a,e as t,d as i,r as d}from"./app.524ecf5c.js
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>If no redirect file is specified, the result will be output to the <code>~/logs/arthas-cache/</code> directory, for example:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ trace Test t <span class="token operator">>></span> <span class="token operator">&</span>
|
||||
job <span class="token function">id</span> <span class="token builtin class-name">:</span> <span class="token number">2</span>
|
||||
cache location <span class="token builtin class-name">:</span> /Users/admin/logs/arthas-cache/28198/2
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>At this time, the command will be executed asynchronously in the background, and the result will be asynchronously saved in the file (<code>~/logs/arthas-cache/\${PID}/\${JobId}</code>);</p><ul><li>At this time, the execution of the task is not affected by the session disconnection; the default timeout period of the task is 1 day, and the default timeout period can be modified through the global <code>options</code> command;</li><li>The result of this command will be output asynchronously to the file; at this time, regardless of whether <code>save-result</code> is true or not, the result will not be written asynchronously to <code>~/logs/arthas-cache/result.log</code>.</li></ul><h2 id="_6-stop-job" tabindex="-1"><a class="header-anchor" href="#_6-stop-job" aria-hidden="true">#</a> 6. Stop job</h2><p>If you want to stop background job, just <code>kill <job-id></code>.</p><h2 id="_7-others" tabindex="-1"><a class="header-anchor" href="#_7-others" aria-hidden="true">#</a> 7. Others</h2><ul><li>Support up to 8 commands at the same time to redirect the output to the log files.</li><li>Do not open too many background jobs at the same time to avoid negative performance effect to the target JVM.</li><li>If you do not want to stop the Arthas service and continue to perform background tasks, you can exit the Arthas console by executing <code>quit</code> command (<code>stop</code> command will stop the Arthas service)</li></ul>`,27);function v(x,j){const n=d("ExternalLinkIcon");return s(),c("div",null,[l,e("p",null,[e("a",u,[h,p,a(n)])]),e("p",null,[b,e("a",m,[g,a(n)]),f]),k])}const _=o(r,[["render",v],["__file","async.html.vue"]]);export{_ as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>At this time, the command will be executed asynchronously in the background, and the result will be asynchronously saved in the file (<code>~/logs/arthas-cache/\${PID}/\${JobId}</code>);</p><ul><li>At this time, the execution of the task is not affected by the session disconnection; the default timeout period of the task is 1 day, and the default timeout period can be modified through the global <code>options</code> command;</li><li>The result of this command will be output asynchronously to the file; at this time, regardless of whether <code>save-result</code> is true or not, the result will not be written asynchronously to <code>~/logs/arthas-cache/result.log</code>.</li></ul><h2 id="_6-stop-job" tabindex="-1"><a class="header-anchor" href="#_6-stop-job" aria-hidden="true">#</a> 6. Stop job</h2><p>If you want to stop background job, just <code>kill <job-id></code>.</p><h2 id="_7-others" tabindex="-1"><a class="header-anchor" href="#_7-others" aria-hidden="true">#</a> 7. Others</h2><ul><li>Support up to 8 commands at the same time to redirect the output to the log files.</li><li>Do not open too many background jobs at the same time to avoid negative performance effect to the target JVM.</li><li>If you do not want to stop the Arthas service and continue to perform background tasks, you can exit the Arthas console by executing <code>quit</code> command (<code>stop</code> command will stop the Arthas service)</li></ul>`,27);function g(f,k){const n=d("ExternalLinkIcon");return o(),s("div",null,[l,e("p",null,[u,e("a",h,[p,c(n)]),b]),m])}const x=a(r,[["render",g],["__file","async.html.vue"]]);export{x as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-786f7161","path":"/en/doc/async.html","title":"Arthas Async Jobs","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"1. Use & to run the command in the background","slug":"_1-use-to-run-the-command-in-the-background","link":"#_1-use-to-run-the-command-in-the-background","children":[]},{"level":2,"title":"2. List background jobs","slug":"_2-list-background-jobs","link":"#_2-list-background-jobs","children":[]},{"level":2,"title":"3. Suspend and cancel job","slug":"_3-suspend-and-cancel-job","link":"#_3-suspend-and-cancel-job","children":[]},{"level":2,"title":"4. fg/bg, switch the job from the foreground to the background, and vise verse","slug":"_4-fg-bg-switch-the-job-from-the-foreground-to-the-background-and-vise-verse","link":"#_4-fg-bg-switch-the-job-from-the-foreground-to-the-background-and-vise-verse","children":[]},{"level":2,"title":"5. Redirect the output","slug":"_5-redirect-the-output","link":"#_5-redirect-the-output","children":[]},{"level":2,"title":"6. Stop job","slug":"_6-stop-job","link":"#_6-stop-job","children":[]},{"level":2,"title":"7. Others","slug":"_7-others","link":"#_7-others","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/async.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-786f7161","path":"/en/doc/async.html","title":"Arthas Async Jobs","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"1. Use & to run the command in the background","slug":"_1-use-to-run-the-command-in-the-background","link":"#_1-use-to-run-the-command-in-the-background","children":[]},{"level":2,"title":"2. List background jobs","slug":"_2-list-background-jobs","link":"#_2-list-background-jobs","children":[]},{"level":2,"title":"3. Suspend and cancel job","slug":"_3-suspend-and-cancel-job","link":"#_3-suspend-and-cancel-job","children":[]},{"level":2,"title":"4. fg/bg, switch the job from the foreground to the background, and vise verse","slug":"_4-fg-bg-switch-the-job-from-the-foreground-to-the-background-and-vise-verse","link":"#_4-fg-bg-switch-the-job-from-the-foreground-to-the-background-and-vise-verse","children":[]},{"level":2,"title":"5. Redirect the output","slug":"_5-redirect-the-output","link":"#_5-redirect-the-output","children":[]},{"level":2,"title":"6. Stop job","slug":"_6-stop-job","link":"#_6-stop-job","children":[]},{"level":2,"title":"7. Others","slug":"_7-others","link":"#_7-others","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/async.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as t,o,c,a as e,b as n,e as a,d as i,r as l}from"./app.524ecf5c.js";const d={},r=e("h1",{id:"arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","aria-hidden":"true"},"#"),a(" Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1")],-1),p={href:"https://arthas.aliyun.com/doc/arthas-tutorials?language=cn&id=case-async-jobs",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1",-1),h=a("\u5728\u7EBF\u6559\u7A0B"),b=a("arthas \u4E2D\u7684\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1\uFF0C\u4F7F\u7528\u4E86\u4EFF linux \u7CFB\u7EDF\u4EFB\u52A1\u76F8\u5173\u7684\u547D\u4EE4\u3002"),m={href:"https://ehlxr.me/2017/01/18/Linux-%E4%B8%AD-fg%E3%80%81bg%E3%80%81jobs%E3%80%81-%E6%8C%87%E4%BB%A4/",target:"_blank",rel:"noopener noreferrer"},g=a("linux \u4EFB\u52A1\u76F8\u5173\u4ECB\u7ECD"),v=a("\u3002"),_=i(`<h2 id="_1-\u4F7F\u7528-\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1" tabindex="-1"><a class="header-anchor" href="#_1-\u4F7F\u7528-\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1" aria-hidden="true">#</a> 1. \u4F7F\u7528&\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1</h2><p>\u6BD4\u5982\u5E0C\u671B\u6267\u884C\u540E\u53F0\u6267\u884C trace \u547D\u4EE4\uFF0C\u90A3\u4E48\u8C03\u7528\u4E0B\u9762\u547D\u4EE4</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>trace Test t <span class="token operator">&</span>
|
||||
import{_ as n,o as t,c,a as e,b as o,e as a,d as i,r as l}from"./app.e2427bec.js";const d={},r=e("h1",{id:"arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","aria-hidden":"true"},"#"),a(" Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1")],-1),p=a("arthas \u4E2D\u7684\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1\uFF0C\u4F7F\u7528\u4E86\u4EFF linux \u7CFB\u7EDF\u4EFB\u52A1\u76F8\u5173\u7684\u547D\u4EE4\u3002"),u={href:"https://ehlxr.me/2017/01/18/Linux-%E4%B8%AD-fg%E3%80%81bg%E3%80%81jobs%E3%80%81-%E6%8C%87%E4%BB%A4/",target:"_blank",rel:"noopener noreferrer"},h=a("linux \u4EFB\u52A1\u76F8\u5173\u4ECB\u7ECD"),b=a("\u3002"),m=i(`<h2 id="_1-\u4F7F\u7528-\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1" tabindex="-1"><a class="header-anchor" href="#_1-\u4F7F\u7528-\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1" aria-hidden="true">#</a> 1. \u4F7F\u7528&\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1</h2><p>\u6BD4\u5982\u5E0C\u671B\u6267\u884C\u540E\u53F0\u6267\u884C trace \u547D\u4EE4\uFF0C\u90A3\u4E48\u8C03\u7528\u4E0B\u9762\u547D\u4EE4</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>trace Test t <span class="token operator">&</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u8FD9\u65F6\u547D\u4EE4\u5728\u540E\u53F0\u6267\u884C\uFF0C\u53EF\u4EE5\u5728 console \u4E2D\u7EE7\u7EED\u6267\u884C\u5176\u4ED6\u547D\u4EE4\u3002</p><h2 id="_2-\u901A\u8FC7-jobs-\u67E5\u770B\u4EFB\u52A1" tabindex="-1"><a class="header-anchor" href="#_2-\u901A\u8FC7-jobs-\u67E5\u770B\u4EFB\u52A1" aria-hidden="true">#</a> 2. \u901A\u8FC7 jobs \u67E5\u770B\u4EFB\u52A1</h2><p>\u5982\u679C\u5E0C\u671B\u67E5\u770B\u5F53\u524D\u6709\u54EA\u4E9B arthas \u4EFB\u52A1\u5728\u6267\u884C\uFF0C\u53EF\u4EE5\u6267\u884C jobs \u547D\u4EE4\uFF0C\u6267\u884C\u7ED3\u679C\u5982\u4E0B</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">jobs</span>
|
||||
<span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">]</span>*
|
||||
Stopped <span class="token function">watch</span> com.taobao.container.Test <span class="token builtin class-name">test</span> <span class="token string">"params[0].{? #this.name == null }"</span> <span class="token parameter variable">-x</span> <span class="token number">2</span>
|
||||
@@ -11,4 +11,4 @@ import{_ as t,o,c,a as e,b as n,e as a,d as i,r as l}from"./app.524ecf5c.js";con
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u5982\u679C\u6CA1\u6709\u6307\u5B9A\u91CD\u5B9A\u5411\u6587\u4EF6\uFF0C\u5219\u4F1A\u628A\u7ED3\u679C\u8F93\u51FA\u5230<code>~/logs/arthas-cache/</code>\u76EE\u5F55\u4E0B\uFF0C\u6BD4\u5982\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ trace Test t <span class="token operator">>></span> <span class="token operator">&</span>
|
||||
job <span class="token function">id</span> <span class="token builtin class-name">:</span> <span class="token number">2</span>
|
||||
cache location <span class="token builtin class-name">:</span> /Users/admin/logs/arthas-cache/28198/2
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u6B64\u65F6\u547D\u4EE4\u4F1A\u5728\u540E\u53F0\u5F02\u6B65\u6267\u884C\uFF0C\u5E76\u5C06\u7ED3\u679C\u5F02\u6B65\u4FDD\u5B58\u5728\u6587\u4EF6\uFF08<code>~/logs/arthas-cache/\${PID}/\${JobId}</code>\uFF09\u4E2D\uFF1B</p><ul><li>\u6B64\u65F6\u4EFB\u52A1\u7684\u6267\u884C\u4E0D\u53D7 session \u65AD\u5F00\u7684\u5F71\u54CD\uFF1B\u4EFB\u52A1\u9ED8\u8BA4\u8D85\u65F6\u65F6\u95F4\u662F 1 \u5929\uFF0C\u53EF\u4EE5\u901A\u8FC7\u5168\u5C40 <code>options</code> \u547D\u4EE4\u4FEE\u6539\u9ED8\u8BA4\u8D85\u65F6\u65F6\u95F4\uFF1B</li><li>\u6B64\u547D\u4EE4\u7684\u7ED3\u679C\u5C06\u5F02\u6B65\u8F93\u51FA\u5230 \b \u6587\u4EF6\u4E2D\uFF1B\u6B64\u65F6\u4E0D\u7BA1 <code>save-result</code> \u662F\u5426\u4E3A true\uFF0C\u90FD\u4E0D\u4F1A\u518D\u5F80<code>~/logs/arthas-cache/result.log</code> \u4E2D\u5F02\u6B65\u5199\u7ED3\u679C\u3002</li></ul><h2 id="_6-\u505C\u6B62\u547D\u4EE4" tabindex="-1"><a class="header-anchor" href="#_6-\u505C\u6B62\u547D\u4EE4" aria-hidden="true">#</a> 6. \u505C\u6B62\u547D\u4EE4</h2><p>\u5F02\u6B65\u6267\u884C\u7684\u547D\u4EE4\uFF0C\u5982\u679C\u5E0C\u671B\u505C\u6B62\uFF0C\u53EF\u6267\u884C<code>kill <job-id></code></p><h2 id="_7-\u5176\u4ED6" tabindex="-1"><a class="header-anchor" href="#_7-\u5176\u4ED6" aria-hidden="true">#</a> 7. \u5176\u4ED6</h2><ul><li>\u6700\u591A\u540C\u65F6\u652F\u6301 8 \u4E2A\u547D\u4EE4\u4F7F\u7528\u91CD\u5B9A\u5411\u5C06\u7ED3\u679C\u5199\u65E5\u5FD7</li><li>\u8BF7\u52FF\u540C\u65F6\u5F00\u542F\u8FC7\u591A\u7684\u540E\u53F0\u5F02\u6B65\u547D\u4EE4\uFF0C\u4EE5\u514D\u5BF9\u76EE\u6807 JVM \u6027\u80FD\u9020\u6210\u5F71\u54CD</li><li>\u5982\u679C\u4E0D\u60F3\u505C\u6B62 arthas\uFF0C\u7EE7\u7EED\u6267\u884C\u540E\u53F0\u4EFB\u52A1\uFF0C\u53EF\u4EE5\u6267\u884C <code>quit</code> \u9000\u51FA arthas \u63A7\u5236\u53F0\uFF08<code>stop</code> \u4F1A\u505C\u6B62 arthas \u670D\u52A1\uFF09</li></ul>`,27);function k(f,x){const s=l("ExternalLinkIcon");return o(),c("div",null,[r,e("p",null,[e("a",p,[u,h,n(s)])]),e("p",null,[b,e("a",m,[g,n(s)]),v]),_])}const E=t(d,[["render",k],["__file","async.html.vue"]]);export{E as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u6B64\u65F6\u547D\u4EE4\u4F1A\u5728\u540E\u53F0\u5F02\u6B65\u6267\u884C\uFF0C\u5E76\u5C06\u7ED3\u679C\u5F02\u6B65\u4FDD\u5B58\u5728\u6587\u4EF6\uFF08<code>~/logs/arthas-cache/\${PID}/\${JobId}</code>\uFF09\u4E2D\uFF1B</p><ul><li>\u6B64\u65F6\u4EFB\u52A1\u7684\u6267\u884C\u4E0D\u53D7 session \u65AD\u5F00\u7684\u5F71\u54CD\uFF1B\u4EFB\u52A1\u9ED8\u8BA4\u8D85\u65F6\u65F6\u95F4\u662F 1 \u5929\uFF0C\u53EF\u4EE5\u901A\u8FC7\u5168\u5C40 <code>options</code> \u547D\u4EE4\u4FEE\u6539\u9ED8\u8BA4\u8D85\u65F6\u65F6\u95F4\uFF1B</li><li>\u6B64\u547D\u4EE4\u7684\u7ED3\u679C\u5C06\u5F02\u6B65\u8F93\u51FA\u5230 \b \u6587\u4EF6\u4E2D\uFF1B\u6B64\u65F6\u4E0D\u7BA1 <code>save-result</code> \u662F\u5426\u4E3A true\uFF0C\u90FD\u4E0D\u4F1A\u518D\u5F80<code>~/logs/arthas-cache/result.log</code> \u4E2D\u5F02\u6B65\u5199\u7ED3\u679C\u3002</li></ul><h2 id="_6-\u505C\u6B62\u547D\u4EE4" tabindex="-1"><a class="header-anchor" href="#_6-\u505C\u6B62\u547D\u4EE4" aria-hidden="true">#</a> 6. \u505C\u6B62\u547D\u4EE4</h2><p>\u5F02\u6B65\u6267\u884C\u7684\u547D\u4EE4\uFF0C\u5982\u679C\u5E0C\u671B\u505C\u6B62\uFF0C\u53EF\u6267\u884C<code>kill <job-id></code></p><h2 id="_7-\u5176\u4ED6" tabindex="-1"><a class="header-anchor" href="#_7-\u5176\u4ED6" aria-hidden="true">#</a> 7. \u5176\u4ED6</h2><ul><li>\u6700\u591A\u540C\u65F6\u652F\u6301 8 \u4E2A\u547D\u4EE4\u4F7F\u7528\u91CD\u5B9A\u5411\u5C06\u7ED3\u679C\u5199\u65E5\u5FD7</li><li>\u8BF7\u52FF\u540C\u65F6\u5F00\u542F\u8FC7\u591A\u7684\u540E\u53F0\u5F02\u6B65\u547D\u4EE4\uFF0C\u4EE5\u514D\u5BF9\u76EE\u6807 JVM \u6027\u80FD\u9020\u6210\u5F71\u54CD</li><li>\u5982\u679C\u4E0D\u60F3\u505C\u6B62 arthas\uFF0C\u7EE7\u7EED\u6267\u884C\u540E\u53F0\u4EFB\u52A1\uFF0C\u53EF\u4EE5\u6267\u884C <code>quit</code> \u9000\u51FA arthas \u63A7\u5236\u53F0\uFF08<code>stop</code> \u4F1A\u505C\u6B62 arthas \u670D\u52A1\uFF09</li></ul>`,27);function g(v,_){const s=l("ExternalLinkIcon");return t(),c("div",null,[r,e("p",null,[p,e("a",u,[h,o(s)]),b]),m])}const f=n(d,[["render",g],["__file","async.html.vue"]]);export{f as default};
|
||||
@@ -1 +1 @@
|
||||
const l=JSON.parse('{"key":"v-4f82df66","path":"/doc/async.html","title":"Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"1. \u4F7F\u7528&\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1","slug":"_1-\u4F7F\u7528-\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1","link":"#_1-\u4F7F\u7528-\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1","children":[]},{"level":2,"title":"2. \u901A\u8FC7 jobs \u67E5\u770B\u4EFB\u52A1","slug":"_2-\u901A\u8FC7-jobs-\u67E5\u770B\u4EFB\u52A1","link":"#_2-\u901A\u8FC7-jobs-\u67E5\u770B\u4EFB\u52A1","children":[]},{"level":2,"title":"3. \u4EFB\u52A1\u6682\u505C\u548C\u53D6\u6D88","slug":"_3-\u4EFB\u52A1\u6682\u505C\u548C\u53D6\u6D88","link":"#_3-\u4EFB\u52A1\u6682\u505C\u548C\u53D6\u6D88","children":[]},{"level":2,"title":"4. fg\u3001bg \u547D\u4EE4\uFF0C\u5C06\u547D\u4EE4\u8F6C\u5230\u524D\u53F0\u3001\u540E\u53F0\u7EE7\u7EED\u6267\u884C","slug":"_4-fg\u3001bg-\u547D\u4EE4-\u5C06\u547D\u4EE4\u8F6C\u5230\u524D\u53F0\u3001\u540E\u53F0\u7EE7\u7EED\u6267\u884C","link":"#_4-fg\u3001bg-\u547D\u4EE4-\u5C06\u547D\u4EE4\u8F6C\u5230\u524D\u53F0\u3001\u540E\u53F0\u7EE7\u7EED\u6267\u884C","children":[]},{"level":2,"title":"5. \u4EFB\u52A1\u8F93\u51FA\u91CD\u5B9A\u5411","slug":"_5-\u4EFB\u52A1\u8F93\u51FA\u91CD\u5B9A\u5411","link":"#_5-\u4EFB\u52A1\u8F93\u51FA\u91CD\u5B9A\u5411","children":[]},{"level":2,"title":"6. \u505C\u6B62\u547D\u4EE4","slug":"_6-\u505C\u6B62\u547D\u4EE4","link":"#_6-\u505C\u6B62\u547D\u4EE4","children":[]},{"level":2,"title":"7. \u5176\u4ED6","slug":"_7-\u5176\u4ED6","link":"#_7-\u5176\u4ED6","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/async.md","version":"4.3.3"}');export{l as data};
|
||||
const l=JSON.parse('{"key":"v-4f82df66","path":"/doc/async.html","title":"Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"1. \u4F7F\u7528&\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1","slug":"_1-\u4F7F\u7528-\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1","link":"#_1-\u4F7F\u7528-\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1","children":[]},{"level":2,"title":"2. \u901A\u8FC7 jobs \u67E5\u770B\u4EFB\u52A1","slug":"_2-\u901A\u8FC7-jobs-\u67E5\u770B\u4EFB\u52A1","link":"#_2-\u901A\u8FC7-jobs-\u67E5\u770B\u4EFB\u52A1","children":[]},{"level":2,"title":"3. \u4EFB\u52A1\u6682\u505C\u548C\u53D6\u6D88","slug":"_3-\u4EFB\u52A1\u6682\u505C\u548C\u53D6\u6D88","link":"#_3-\u4EFB\u52A1\u6682\u505C\u548C\u53D6\u6D88","children":[]},{"level":2,"title":"4. fg\u3001bg \u547D\u4EE4\uFF0C\u5C06\u547D\u4EE4\u8F6C\u5230\u524D\u53F0\u3001\u540E\u53F0\u7EE7\u7EED\u6267\u884C","slug":"_4-fg\u3001bg-\u547D\u4EE4-\u5C06\u547D\u4EE4\u8F6C\u5230\u524D\u53F0\u3001\u540E\u53F0\u7EE7\u7EED\u6267\u884C","link":"#_4-fg\u3001bg-\u547D\u4EE4-\u5C06\u547D\u4EE4\u8F6C\u5230\u524D\u53F0\u3001\u540E\u53F0\u7EE7\u7EED\u6267\u884C","children":[]},{"level":2,"title":"5. \u4EFB\u52A1\u8F93\u51FA\u91CD\u5B9A\u5411","slug":"_5-\u4EFB\u52A1\u8F93\u51FA\u91CD\u5B9A\u5411","link":"#_5-\u4EFB\u52A1\u8F93\u51FA\u91CD\u5B9A\u5411","children":[]},{"level":2,"title":"6. \u505C\u6B62\u547D\u4EE4","slug":"_6-\u505C\u6B62\u547D\u4EE4","link":"#_6-\u505C\u6B62\u547D\u4EE4","children":[]},{"level":2,"title":"7. \u5176\u4ED6","slug":"_7-\u5176\u4ED6","link":"#_7-\u5176\u4ED6","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/async.md","version":"4.3.5"}');export{l as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as s,o as i,c as o,a as e,b as r,d as a,e as n,r as c}from"./app.524ecf5c.js";const d={},l=a(`<h1 id="auth" tabindex="-1"><a class="header-anchor" href="#auth" aria-hidden="true">#</a> auth</h1><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Authenticates the current session</p></div><h2 id="configure-username-and-password" tabindex="-1"><a class="header-anchor" href="#configure-username-and-password" aria-hidden="true">#</a> Configure username and password</h2><p>When attaching, you can specify a password on the command line. such as:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>java -jar arthas-boot.jar --password ppp
|
||||
import{_ as s,o as i,c as o,a as e,b as r,d as a,e as n,r as c}from"./app.e2427bec.js";const d={},l=a(`<h1 id="auth" tabindex="-1"><a class="header-anchor" href="#auth" aria-hidden="true">#</a> auth</h1><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Authenticates the current session</p></div><h2 id="configure-username-and-password" tabindex="-1"><a class="header-anchor" href="#configure-username-and-password" aria-hidden="true">#</a> Configure username and password</h2><p>When attaching, you can specify a password on the command line. such as:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>java -jar arthas-boot.jar --password ppp
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>The user can be specified by the <code>--username</code> option, the default value is <code>arthas</code>.</p></li><li><p>You can also configure username/password in <code>arthas.properties</code>. The priority of the command line is higher than that of the configuration file.</p></li><li><p>If only <code>username</code> is configured and no <code>password</code> is configured, a random password will be generated and printed in <code>~/logs/arthas/arthas.log</code></p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>Using generated security password: 0vUBJpRIppkKuZ7dYzYqOKtranj4unGh
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li></ul><h2 id="local-connection-does-not-require-authentication" tabindex="-1"><a class="header-anchor" href="#local-connection-does-not-require-authentication" aria-hidden="true">#</a> Local connection does not require authentication</h2><p>By default, there are configurations in the <code>arthas.properties</code> file:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>arthas.localConnectionNonAuth=true
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>When the password is configured, connect from localhost, the authentication is not required. The default configuration value is true, which is convenient for local connection. Authentication is only required when connecting remotely.</p><h2 id="authenticate-in-the-telnet-console" tabindex="-1"><a class="header-anchor" href="#authenticate-in-the-telnet-console" aria-hidden="true">#</a> Authenticate in the telnet console</h2><p>After connecting to arthas, directly executing the command will prompt for authentication:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token punctuation">[</span>arthas@37430<span class="token punctuation">]</span>$ <span class="token builtin class-name">help</span>
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-d0358c7e","path":"/doc/auth.html","title":"auth","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801","slug":"\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801","link":"#\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801","children":[]},{"level":2,"title":"\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743","slug":"\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743","link":"#\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743","children":[]},{"level":2,"title":"\u5728 telnet console \u91CC\u9274\u6743","slug":"\u5728-telnet-console-\u91CC\u9274\u6743","link":"#\u5728-telnet-console-\u91CC\u9274\u6743","children":[]},{"level":2,"title":"Web console \u5BC6\u7801\u9A8C\u8BC1","slug":"web-console-\u5BC6\u7801\u9A8C\u8BC1","link":"#web-console-\u5BC6\u7801\u9A8C\u8BC1","children":[]},{"level":2,"title":"HTTP API \u9A8C\u8BC1","slug":"http-api-\u9A8C\u8BC1","link":"#http-api-\u9A8C\u8BC1","children":[{"level":3,"title":"Authorization Header \u65B9\u5F0F\uFF08\u63A8\u8350\uFF09","slug":"authorization-header-\u65B9\u5F0F-\u63A8\u8350","link":"#authorization-header-\u65B9\u5F0F-\u63A8\u8350","children":[]},{"level":3,"title":"URL \u53C2\u6570\u4F20\u9012\u65B9\u5F0F","slug":"url-\u53C2\u6570\u4F20\u9012\u65B9\u5F0F","link":"#url-\u53C2\u6570\u4F20\u9012\u65B9\u5F0F","children":[]}]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/auth.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-d0358c7e","path":"/doc/auth.html","title":"auth","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801","slug":"\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801","link":"#\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801","children":[]},{"level":2,"title":"\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743","slug":"\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743","link":"#\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743","children":[]},{"level":2,"title":"\u5728 telnet console \u91CC\u9274\u6743","slug":"\u5728-telnet-console-\u91CC\u9274\u6743","link":"#\u5728-telnet-console-\u91CC\u9274\u6743","children":[]},{"level":2,"title":"Web console \u5BC6\u7801\u9A8C\u8BC1","slug":"web-console-\u5BC6\u7801\u9A8C\u8BC1","link":"#web-console-\u5BC6\u7801\u9A8C\u8BC1","children":[]},{"level":2,"title":"HTTP API \u9A8C\u8BC1","slug":"http-api-\u9A8C\u8BC1","link":"#http-api-\u9A8C\u8BC1","children":[{"level":3,"title":"Authorization Header \u65B9\u5F0F\uFF08\u63A8\u8350\uFF09","slug":"authorization-header-\u65B9\u5F0F-\u63A8\u8350","link":"#authorization-header-\u65B9\u5F0F-\u63A8\u8350","children":[]},{"level":3,"title":"URL \u53C2\u6570\u4F20\u9012\u65B9\u5F0F","slug":"url-\u53C2\u6570\u4F20\u9012\u65B9\u5F0F","link":"#url-\u53C2\u6570\u4F20\u9012\u65B9\u5F0F","children":[]}]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/auth.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as t,o as i,c as o,a as e,b as d,d as a,e as n,r}from"./app.524ecf5c.js";const c={},l=a(`<h1 id="auth" tabindex="-1"><a class="header-anchor" href="#auth" aria-hidden="true">#</a> auth</h1><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u9A8C\u8BC1\u5F53\u524D\u4F1A\u8BDD</p></div><h2 id="\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801" tabindex="-1"><a class="header-anchor" href="#\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801" aria-hidden="true">#</a> \u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801</h2><p>\u5728 attach \u65F6\uFF0C\u53EF\u4EE5\u5728\u547D\u4EE4\u884C\u6307\u5B9A\u5BC6\u7801\u3002\u6BD4\u5982\uFF1A</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>java -jar arthas-boot.jar --password ppp
|
||||
import{_ as t,o as i,c as o,a as e,b as d,d as a,e as n,r}from"./app.e2427bec.js";const c={},l=a(`<h1 id="auth" tabindex="-1"><a class="header-anchor" href="#auth" aria-hidden="true">#</a> auth</h1><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u9A8C\u8BC1\u5F53\u524D\u4F1A\u8BDD</p></div><h2 id="\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801" tabindex="-1"><a class="header-anchor" href="#\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801" aria-hidden="true">#</a> \u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801</h2><p>\u5728 attach \u65F6\uFF0C\u53EF\u4EE5\u5728\u547D\u4EE4\u884C\u6307\u5B9A\u5BC6\u7801\u3002\u6BD4\u5982\uFF1A</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>java -jar arthas-boot.jar --password ppp
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>\u53EF\u4EE5\u901A\u8FC7 <code>--username</code> \u9009\u9879\u6765\u6307\u5B9A\u7528\u6237\uFF0C\u9ED8\u8BA4\u503C\u662F<code>arthas</code>\u3002</p></li><li><p>\u4E5F\u53EF\u4EE5\u5728 <code>arthas.properties</code> \u91CC\u4E2D\u914D\u7F6E username/password\u3002\u547D\u4EE4\u884C\u7684\u4F18\u5148\u7EA7\u5927\u4E8E\u914D\u7F6E\u6587\u4EF6\u3002</p></li><li><p>\u5982\u679C\u53EA\u914D\u7F6E<code>username</code>\uFF0C\u6CA1\u6709\u914D\u7F6E<code>password</code>\uFF0C\u5219\u4F1A\u751F\u6210\u968F\u673A\u5BC6\u7801\uFF0C\u6253\u5370\u5728<code>~/logs/arthas/arthas.log</code>\u4E2D</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>Using generated security password: 0vUBJpRIppkKuZ7dYzYqOKtranj4unGh
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li></ul><h2 id="\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743" tabindex="-1"><a class="header-anchor" href="#\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743" aria-hidden="true">#</a> \u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743</h2><p>\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u5728<code>arthas.properties</code>\u6587\u4EF6\u91CC\u6709\u914D\u7F6E\uFF1A</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>arthas.localConnectionNonAuth=true
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u5F53\u914D\u7F6E\u5BC6\u7801\u65F6\uFF0C\u4F7F\u7528\u672C\u5730\u8FDE\u63A5\uFF0C\u4E5F\u4E0D\u9700\u8981\u9274\u6743\u3002\u9ED8\u8BA4\u914D\u7F6E\u503C\u662F true\uFF0C\u65B9\u4FBF\u672C\u5730\u8FDE\u63A5\u4F7F\u7528\u3002\u53EA\u6709\u8FDC\u7A0B\u8FDE\u63A5\u65F6\uFF0C\u624D\u9700\u8981\u9274\u6743\u3002</p><h2 id="\u5728-telnet-console-\u91CC\u9274\u6743" tabindex="-1"><a class="header-anchor" href="#\u5728-telnet-console-\u91CC\u9274\u6743" aria-hidden="true">#</a> \u5728 telnet console \u91CC\u9274\u6743</h2><p>\u8FDE\u63A5\u5230 arthas \u540E\uFF0C\u76F4\u63A5\u6267\u884C\u547D\u4EE4\u4F1A\u63D0\u793A\u9700\u8981\u9274\u6743\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token punctuation">[</span>arthas@37430<span class="token punctuation">]</span>$ <span class="token builtin class-name">help</span>
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-f76c33a6","path":"/en/doc/auth.html","title":"auth","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Configure username and password","slug":"configure-username-and-password","link":"#configure-username-and-password","children":[]},{"level":2,"title":"Local connection does not require authentication","slug":"local-connection-does-not-require-authentication","link":"#local-connection-does-not-require-authentication","children":[]},{"level":2,"title":"Authenticate in the telnet console","slug":"authenticate-in-the-telnet-console","link":"#authenticate-in-the-telnet-console","children":[]},{"level":2,"title":"Web console Authentication","slug":"web-console-authentication","link":"#web-console-authentication","children":[]},{"level":2,"title":"HTTP API Authentication","slug":"http-api-authentication","link":"#http-api-authentication","children":[{"level":3,"title":"HTTP Authorization Header(recommended)","slug":"http-authorization-header-recommended","link":"#http-authorization-header-recommended","children":[]},{"level":3,"title":"URL parameters","slug":"url-parameters","link":"#url-parameters","children":[]}]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/auth.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-f76c33a6","path":"/en/doc/auth.html","title":"auth","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Configure username and password","slug":"configure-username-and-password","link":"#configure-username-and-password","children":[]},{"level":2,"title":"Local connection does not require authentication","slug":"local-connection-does-not-require-authentication","link":"#local-connection-does-not-require-authentication","children":[]},{"level":2,"title":"Authenticate in the telnet console","slug":"authenticate-in-the-telnet-console","link":"#authenticate-in-the-telnet-console","children":[]},{"level":2,"title":"Web console Authentication","slug":"web-console-authentication","link":"#web-console-authentication","children":[]},{"level":2,"title":"HTTP API Authentication","slug":"http-api-authentication","link":"#http-api-authentication","children":[{"level":3,"title":"HTTP Authorization Header(recommended)","slug":"http-authorization-header-recommended","link":"#http-authorization-header-recommended","children":[]},{"level":3,"title":"URL parameters","slug":"url-parameters","link":"#url-parameters","children":[]}]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/auth.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-3157067a","path":"/doc/base64.html","title":"base64","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u5BF9\u6587\u4EF6\u8FDB\u884C base64 \u7F16\u7801","slug":"\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801","link":"#\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801","children":[]},{"level":2,"title":"\u5BF9\u6587\u4EF6\u8FDB\u884C base64 \u7F16\u7801\u5E76\u628A\u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\u91CC","slug":"\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801\u5E76\u628A\u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\u91CC","link":"#\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801\u5E76\u628A\u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\u91CC","children":[]},{"level":2,"title":"\u7528 base64 \u89E3\u7801\u6587\u4EF6","slug":"\u7528-base64-\u89E3\u7801\u6587\u4EF6","link":"#\u7528-base64-\u89E3\u7801\u6587\u4EF6","children":[]},{"level":2,"title":"\u7528 base64 \u89E3\u7801\u6587\u4EF6\u5E76\u4FDD\u5B58\u7ED3\u679C\u5230\u6587\u4EF6\u91CC","slug":"\u7528-base64-\u89E3\u7801\u6587\u4EF6\u5E76\u4FDD\u5B58\u7ED3\u679C\u5230\u6587\u4EF6\u91CC","link":"#\u7528-base64-\u89E3\u7801\u6587\u4EF6\u5E76\u4FDD\u5B58\u7ED3\u679C\u5230\u6587\u4EF6\u91CC","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/base64.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-3157067a","path":"/doc/base64.html","title":"base64","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u5BF9\u6587\u4EF6\u8FDB\u884C base64 \u7F16\u7801","slug":"\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801","link":"#\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801","children":[]},{"level":2,"title":"\u5BF9\u6587\u4EF6\u8FDB\u884C base64 \u7F16\u7801\u5E76\u628A\u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\u91CC","slug":"\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801\u5E76\u628A\u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\u91CC","link":"#\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801\u5E76\u628A\u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\u91CC","children":[]},{"level":2,"title":"\u7528 base64 \u89E3\u7801\u6587\u4EF6","slug":"\u7528-base64-\u89E3\u7801\u6587\u4EF6","link":"#\u7528-base64-\u89E3\u7801\u6587\u4EF6","children":[]},{"level":2,"title":"\u7528 base64 \u89E3\u7801\u6587\u4EF6\u5E76\u4FDD\u5B58\u7ED3\u679C\u5230\u6587\u4EF6\u91CC","slug":"\u7528-base64-\u89E3\u7801\u6587\u4EF6\u5E76\u4FDD\u5B58\u7ED3\u679C\u5230\u6587\u4EF6\u91CC","link":"#\u7528-base64-\u89E3\u7801\u6587\u4EF6\u5E76\u4FDD\u5B58\u7ED3\u679C\u5230\u6587\u4EF6\u91CC","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/base64.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-d17b7034","path":"/en/doc/base64.html","title":"base64","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Encode to base64","slug":"encode-to-base64","link":"#encode-to-base64","children":[]},{"level":2,"title":"Encode to base64 and save output to file","slug":"encode-to-base64-and-save-output-to-file","link":"#encode-to-base64-and-save-output-to-file","children":[]},{"level":2,"title":"Decode from base64","slug":"decode-from-base64","link":"#decode-from-base64","children":[]},{"level":2,"title":"Decode from base64 and save output to file","slug":"decode-from-base64-and-save-output-to-file","link":"#decode-from-base64-and-save-output-to-file","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/base64.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-d17b7034","path":"/en/doc/base64.html","title":"base64","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Encode to base64","slug":"encode-to-base64","link":"#encode-to-base64","children":[]},{"level":2,"title":"Encode to base64 and save output to file","slug":"encode-to-base64-and-save-output-to-file","link":"#encode-to-base64-and-save-output-to-file","children":[]},{"level":2,"title":"Decode from base64","slug":"decode-from-base64","link":"#decode-from-base64","children":[]},{"level":2,"title":"Decode from base64 and save output to file","slug":"decode-from-base64-and-save-output-to-file","link":"#decode-from-base64-and-save-output-to-file","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/base64.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as a,o as e,c as s,d as n}from"./app.524ecf5c.js";const t={},i=n(`<h1 id="base64" tabindex="-1"><a class="header-anchor" href="#base64" aria-hidden="true">#</a> base64</h1><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>base64 \u7F16\u7801\u8F6C\u6362\uFF0C\u548C linux \u91CC\u7684 base64 \u547D\u4EE4\u7C7B\u4F3C\u3002</p></div><h2 id="\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801" tabindex="-1"><a class="header-anchor" href="#\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801" aria-hidden="true">#</a> \u5BF9\u6587\u4EF6\u8FDB\u884C base64 \u7F16\u7801</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token punctuation">[</span>arthas@70070<span class="token punctuation">]</span>$ <span class="token builtin class-name">echo</span> <span class="token string">'abc'</span> <span class="token operator">></span> /tmp/test.txt
|
||||
import{_ as a,o as e,c as s,d as n}from"./app.e2427bec.js";const t={},i=n(`<h1 id="base64" tabindex="-1"><a class="header-anchor" href="#base64" aria-hidden="true">#</a> base64</h1><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>base64 \u7F16\u7801\u8F6C\u6362\uFF0C\u548C linux \u91CC\u7684 base64 \u547D\u4EE4\u7C7B\u4F3C\u3002</p></div><h2 id="\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801" tabindex="-1"><a class="header-anchor" href="#\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801" aria-hidden="true">#</a> \u5BF9\u6587\u4EF6\u8FDB\u884C base64 \u7F16\u7801</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token punctuation">[</span>arthas@70070<span class="token punctuation">]</span>$ <span class="token builtin class-name">echo</span> <span class="token string">'abc'</span> <span class="token operator">></span> /tmp/test.txt
|
||||
<span class="token punctuation">[</span>arthas@70070<span class="token punctuation">]</span>$ <span class="token function">cat</span> /tmp/test.txt
|
||||
abc
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as e,o as a,c as s,d as n}from"./app.524ecf5c.js";const t={},i=n(`<h1 id="base64" tabindex="-1"><a class="header-anchor" href="#base64" aria-hidden="true">#</a> base64</h1><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Encode and decode using Base64 representation.</p></div><h2 id="encode-to-base64" tabindex="-1"><a class="header-anchor" href="#encode-to-base64" aria-hidden="true">#</a> Encode to base64</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token punctuation">[</span>arthas@70070<span class="token punctuation">]</span>$ <span class="token builtin class-name">echo</span> <span class="token string">'abc'</span> <span class="token operator">></span> /tmp/test.txt
|
||||
import{_ as e,o as a,c as s,d as n}from"./app.e2427bec.js";const t={},i=n(`<h1 id="base64" tabindex="-1"><a class="header-anchor" href="#base64" aria-hidden="true">#</a> base64</h1><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Encode and decode using Base64 representation.</p></div><h2 id="encode-to-base64" tabindex="-1"><a class="header-anchor" href="#encode-to-base64" aria-hidden="true">#</a> Encode to base64</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token punctuation">[</span>arthas@70070<span class="token punctuation">]</span>$ <span class="token builtin class-name">echo</span> <span class="token string">'abc'</span> <span class="token operator">></span> /tmp/test.txt
|
||||
<span class="token punctuation">[</span>arthas@70070<span class="token punctuation">]</span>$ <span class="token function">cat</span> /tmp/test.txt
|
||||
abc
|
||||
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-cc8f4ae6","path":"/doc/batch-support.html","title":"\u6279\u5904\u7406\u529F\u80FD","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u65B9\u6CD5","slug":"\u4F7F\u7528\u65B9\u6CD5","link":"#\u4F7F\u7528\u65B9\u6CD5","children":[{"level":3,"title":"\u7B2C\u4E00\u6B65\uFF1A\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","slug":"\u7B2C\u4E00\u6B65-\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","link":"#\u7B2C\u4E00\u6B65-\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","children":[]},{"level":3,"title":"\u7B2C\u4E8C\u6B65\uFF1A\u8FD0\u884C\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","slug":"\u7B2C\u4E8C\u6B65-\u8FD0\u884C\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","link":"#\u7B2C\u4E8C\u6B65-\u8FD0\u884C\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","children":[]},{"level":3,"title":"\u7B2C\u4E09\u6B65\uFF1A\u67E5\u770B\u8FD0\u884C\u7ED3\u679C","slug":"\u7B2C\u4E09\u6B65-\u67E5\u770B\u8FD0\u884C\u7ED3\u679C","link":"#\u7B2C\u4E09\u6B65-\u67E5\u770B\u8FD0\u884C\u7ED3\u679C","children":[]}]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/batch-support.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-cc8f4ae6","path":"/doc/batch-support.html","title":"\u6279\u5904\u7406\u529F\u80FD","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u65B9\u6CD5","slug":"\u4F7F\u7528\u65B9\u6CD5","link":"#\u4F7F\u7528\u65B9\u6CD5","children":[{"level":3,"title":"\u7B2C\u4E00\u6B65\uFF1A\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","slug":"\u7B2C\u4E00\u6B65-\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","link":"#\u7B2C\u4E00\u6B65-\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","children":[]},{"level":3,"title":"\u7B2C\u4E8C\u6B65\uFF1A\u8FD0\u884C\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","slug":"\u7B2C\u4E8C\u6B65-\u8FD0\u884C\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","link":"#\u7B2C\u4E8C\u6B65-\u8FD0\u884C\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","children":[]},{"level":3,"title":"\u7B2C\u4E09\u6B65\uFF1A\u67E5\u770B\u8FD0\u884C\u7ED3\u679C","slug":"\u7B2C\u4E09\u6B65-\u67E5\u770B\u8FD0\u884C\u7ED3\u679C","link":"#\u7B2C\u4E09\u6B65-\u67E5\u770B\u8FD0\u884C\u7ED3\u679C","children":[]}]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/batch-support.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-765e30be","path":"/en/doc/batch-support.html","title":"Batch Processing","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Step 1: Create the script","slug":"step-1-create-the-script","link":"#step-1-create-the-script","children":[]},{"level":3,"title":"Step 2: Run the script","slug":"step-2-run-the-script","link":"#step-2-run-the-script","children":[]},{"level":3,"title":"Step 3: Check the output","slug":"step-3-check-the-output","link":"#step-3-check-the-output","children":[]}]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/batch-support.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-765e30be","path":"/en/doc/batch-support.html","title":"Batch Processing","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Step 1: Create the script","slug":"step-1-create-the-script","link":"#step-1-create-the-script","children":[]},{"level":3,"title":"Step 2: Run the script","slug":"step-2-run-the-script","link":"#step-2-run-the-script","children":[]},{"level":3,"title":"Step 3: Check the output","slug":"step-3-check-the-output","link":"#step-3-check-the-output","children":[]}]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/batch-support.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as n,o as c,c as o,a as e,b as i,w as d,d as a,e as s,r}from"./app.524ecf5c.js";const l={},h=a(`<h1 id="batch-processing" tabindex="-1"><a class="header-anchor" href="#batch-processing" aria-hidden="true">#</a> Batch Processing</h1><p>With the help of Batch Processing, you can run multiple commands in batch and get the final result at the end. The process name can be specified using the \u201C\u2013select\u201D parameter.</p><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><h3 id="step-1-create-the-script" tabindex="-1"><a class="header-anchor" href="#step-1-create-the-script" aria-hidden="true">#</a> Step 1: Create the script</h3><p>Create a <code>test.as</code> script suffixed with <code>as</code>. Here <code>as</code> is suggested for the suffix of the filename, but in fact any suffix is acceptable.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>\u279C arthas git:<span class="token punctuation">(</span>develop<span class="token punctuation">)</span> <span class="token function">cat</span> /var/tmp/test.as
|
||||
import{_ as n,o as c,c as o,a as e,b as i,w as d,d as a,e as s,r}from"./app.e2427bec.js";const l={},h=a(`<h1 id="batch-processing" tabindex="-1"><a class="header-anchor" href="#batch-processing" aria-hidden="true">#</a> Batch Processing</h1><p>With the help of Batch Processing, you can run multiple commands in batch and get the final result at the end. The process name can be specified using the \u201C\u2013select\u201D parameter.</p><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><h3 id="step-1-create-the-script" tabindex="-1"><a class="header-anchor" href="#step-1-create-the-script" aria-hidden="true">#</a> Step 1: Create the script</h3><p>Create a <code>test.as</code> script suffixed with <code>as</code>. Here <code>as</code> is suggested for the suffix of the filename, but in fact any suffix is acceptable.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>\u279C arthas git:<span class="token punctuation">(</span>develop<span class="token punctuation">)</span> <span class="token function">cat</span> /var/tmp/test.as
|
||||
<span class="token builtin class-name">help</span>
|
||||
dashboard <span class="token parameter variable">-n</span> <span class="token number">1</span>
|
||||
session
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as t,o as d,c as i,a as e,b as o,w as c,d as a,e as s,r}from"./app.524ecf5c.js";const l={},p=a('<h1 id="\u6279\u5904\u7406\u529F\u80FD" tabindex="-1"><a class="header-anchor" href="#\u6279\u5904\u7406\u529F\u80FD" aria-hidden="true">#</a> \u6279\u5904\u7406\u529F\u80FD</h1><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u901A\u8FC7\u6279\u5904\u7406\u529F\u80FD\uFF0Carthas \u652F\u6301\u4E00\u6B21\u6027\u6279\u91CF\u8FD0\u884C\u591A\u4E2A\u547D\u4EE4\uFF0C\u5E76\u53D6\u5F97\u547D\u4EE4\u6267\u884C\u7684\u7ED3\u679C\u3002\u53EF\u7ED3\u5408 <code>--select</code> \u53C2\u6570\u53EF\u4EE5\u6307\u5B9A\u8FDB\u7A0B\u540D\u5B57\u4E00\u8D77\u4F7F\u7528\u3002</p></div><h2 id="\u4F7F\u7528\u65B9\u6CD5" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u65B9\u6CD5" aria-hidden="true">#</a> \u4F7F\u7528\u65B9\u6CD5</h2><h3 id="\u7B2C\u4E00\u6B65-\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C" tabindex="-1"><a class="header-anchor" href="#\u7B2C\u4E00\u6B65-\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C" aria-hidden="true">#</a> \u7B2C\u4E00\u6B65\uFF1A\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C</h3><p>\u8FD9\u91CC\u6211\u4EEC\u65B0\u5EFA\u4E86\u4E00\u4E2A<code>test.as</code>\u811A\u672C\uFF0C\u4E3A\u4E86\u89C4\u8303\uFF0C\u6211\u4EEC\u91C7\u7528\u4E86.as \u540E\u7F00\u540D\uFF0C\u4F46\u4E8B\u5B9E\u4E0A\u4EFB\u610F\u7684\u6587\u672C\u6587\u4EF6\u90FD ok\u3002</p>',5),h={class:"custom-container tip"},u=e("p",{class:"custom-container-title"},"\u63D0\u793A",-1),m=e("li",null,"\u76EE\u524D\u9700\u8981\u6BCF\u4E2A\u547D\u4EE4\u5360\u4E00\u884C",-1),v=e("li",null,[s("dashboard \u52A1\u5FC5\u6307\u5B9A\u6267\u884C\u6B21\u6570 ("),e("code",null,"-n"),s(")\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u6279\u5904\u7406\u811A\u672C\u65E0\u6CD5\u7EC8\u6B62")],-1),_=e("li",null,[s("watch/tt/trace/monitor/stack \u7B49\u547D\u4EE4\u52A1\u5FC5\u6307\u5B9A\u6267\u884C\u6B21\u6570 ("),e("code",null,"-n"),s(")\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u6279\u5904\u7406\u811A\u672C\u65E0\u6CD5\u7EC8\u6B62")],-1),b=s("\u53EF\u4EE5\u4F7F\u7528\u5F02\u6B65\u540E\u53F0\u4EFB\u52A1\uFF0C\u5982 "),g=e("code",null,"watch c.t.X test returnObj > &",-1),k=s("\uFF0C\u8BA9\u547D\u4EE4\u4E00\u76F4\u5728\u540E\u53F0\u8FD0\u884C\uFF0C\u901A\u8FC7\u65E5\u5FD7\u83B7\u53D6\u7ED3\u679C\uFF0C"),x=s("\u83B7\u53D6\u66F4\u591A\u5F02\u6B65\u4EFB\u52A1\u7684\u4FE1\u606F"),f=a(`<div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>\u279C arthas git:(develop) cat /var/tmp/test.as
|
||||
import{_ as t,o as d,c as i,a as e,b as o,w as c,d as a,e as s,r}from"./app.e2427bec.js";const l={},p=a('<h1 id="\u6279\u5904\u7406\u529F\u80FD" tabindex="-1"><a class="header-anchor" href="#\u6279\u5904\u7406\u529F\u80FD" aria-hidden="true">#</a> \u6279\u5904\u7406\u529F\u80FD</h1><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u901A\u8FC7\u6279\u5904\u7406\u529F\u80FD\uFF0Carthas \u652F\u6301\u4E00\u6B21\u6027\u6279\u91CF\u8FD0\u884C\u591A\u4E2A\u547D\u4EE4\uFF0C\u5E76\u53D6\u5F97\u547D\u4EE4\u6267\u884C\u7684\u7ED3\u679C\u3002\u53EF\u7ED3\u5408 <code>--select</code> \u53C2\u6570\u53EF\u4EE5\u6307\u5B9A\u8FDB\u7A0B\u540D\u5B57\u4E00\u8D77\u4F7F\u7528\u3002</p></div><h2 id="\u4F7F\u7528\u65B9\u6CD5" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u65B9\u6CD5" aria-hidden="true">#</a> \u4F7F\u7528\u65B9\u6CD5</h2><h3 id="\u7B2C\u4E00\u6B65-\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C" tabindex="-1"><a class="header-anchor" href="#\u7B2C\u4E00\u6B65-\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C" aria-hidden="true">#</a> \u7B2C\u4E00\u6B65\uFF1A\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C</h3><p>\u8FD9\u91CC\u6211\u4EEC\u65B0\u5EFA\u4E86\u4E00\u4E2A<code>test.as</code>\u811A\u672C\uFF0C\u4E3A\u4E86\u89C4\u8303\uFF0C\u6211\u4EEC\u91C7\u7528\u4E86.as \u540E\u7F00\u540D\uFF0C\u4F46\u4E8B\u5B9E\u4E0A\u4EFB\u610F\u7684\u6587\u672C\u6587\u4EF6\u90FD ok\u3002</p>',5),h={class:"custom-container tip"},u=e("p",{class:"custom-container-title"},"\u63D0\u793A",-1),m=e("li",null,"\u76EE\u524D\u9700\u8981\u6BCF\u4E2A\u547D\u4EE4\u5360\u4E00\u884C",-1),v=e("li",null,[s("dashboard \u52A1\u5FC5\u6307\u5B9A\u6267\u884C\u6B21\u6570 ("),e("code",null,"-n"),s(")\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u6279\u5904\u7406\u811A\u672C\u65E0\u6CD5\u7EC8\u6B62")],-1),_=e("li",null,[s("watch/tt/trace/monitor/stack \u7B49\u547D\u4EE4\u52A1\u5FC5\u6307\u5B9A\u6267\u884C\u6B21\u6570 ("),e("code",null,"-n"),s(")\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u6279\u5904\u7406\u811A\u672C\u65E0\u6CD5\u7EC8\u6B62")],-1),b=s("\u53EF\u4EE5\u4F7F\u7528\u5F02\u6B65\u540E\u53F0\u4EFB\u52A1\uFF0C\u5982 "),g=e("code",null,"watch c.t.X test returnObj > &",-1),k=s("\uFF0C\u8BA9\u547D\u4EE4\u4E00\u76F4\u5728\u540E\u53F0\u8FD0\u884C\uFF0C\u901A\u8FC7\u65E5\u5FD7\u83B7\u53D6\u7ED3\u679C\uFF0C"),x=s("\u83B7\u53D6\u66F4\u591A\u5F02\u6B65\u4EFB\u52A1\u7684\u4FE1\u606F"),f=a(`<div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>\u279C arthas git:(develop) cat /var/tmp/test.as
|
||||
help
|
||||
dashboard -n 1
|
||||
session
|
||||
@@ -1,2 +0,0 @@
|
||||
import{_ as n,o as s,c,a as e,b as o,e as a,d as r,r as i}from"./app.524ecf5c.js";const d={},l=e("h1",{id:"cat",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cat","aria-hidden":"true"},"#"),a(" cat")],-1),h={href:"https://arthas.aliyun.com/doc/arthas-tutorials.html?language=en&id=command-cat",target:"_blank",rel:"noopener noreferrer"},_=e("code",null,"cat",-1),u=a(" online tutorial"),p=r(`<div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Concatenate and print files</p></div><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">cat</span> /tmp/a.txt
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,3);function m(f,v){const t=i("ExternalLinkIcon");return s(),c("div",null,[l,e("p",null,[e("a",h,[_,u,o(t)])]),p])}const x=n(d,[["render",m],["__file","cat.html.vue"]]);export{x as default};
|
||||
@@ -1,2 +0,0 @@
|
||||
import{_ as n,o as c,c as s,a as e,b as o,e as a,d as r,r as i}from"./app.524ecf5c.js";const d={},l=e("h1",{id:"cat",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cat","aria-hidden":"true"},"#"),a(" cat")],-1),h={href:"https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=command-cat",target:"_blank",rel:"noopener noreferrer"},_=e("code",null,"cat",-1),u=a("\u5728\u7EBF\u6559\u7A0B"),m=r(`<div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u6253\u5370\u6587\u4EF6\u5185\u5BB9\uFF0C\u548C linux \u91CC\u7684 cat \u547D\u4EE4\u7C7B\u4F3C\u3002</p></div><h2 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">cat</span> /tmp/a.txt
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,3);function p(f,v){const t=i("ExternalLinkIcon");return c(),s("div",null,[l,e("p",null,[e("a",h,[_,u,o(t)])]),m])}const b=n(d,[["render",p],["__file","cat.html.vue"]]);export{b as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-6542b733","path":"/doc/cat.html","title":"cat","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/cat.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-6542b733","path":"/doc/cat.html","title":"cat","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/cat.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -0,0 +1,2 @@
|
||||
import{_ as a,o as e,c as t,d as c}from"./app.e2427bec.js";const s={},n=c(`<h1 id="cat" tabindex="-1"><a class="header-anchor" href="#cat" aria-hidden="true">#</a> cat</h1><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u6253\u5370\u6587\u4EF6\u5185\u5BB9\uFF0C\u548C linux \u91CC\u7684 cat \u547D\u4EE4\u7C7B\u4F3C\u3002</p></div><h2 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">cat</span> /tmp/a.txt
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,4),i=[n];function d(r,o){return e(),t("div",null,i)}const h=a(s,[["render",d],["__file","cat.html.vue"]]);export{h as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-64a0cd47","path":"/en/doc/cat.html","title":"cat","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/cat.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-64a0cd47","path":"/en/doc/cat.html","title":"cat","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/cat.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -0,0 +1,2 @@
|
||||
import{_ as a,o as e,c as t,d as s}from"./app.e2427bec.js";const c={},n=s(`<h1 id="cat" tabindex="-1"><a class="header-anchor" href="#cat" aria-hidden="true">#</a> cat</h1><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Concatenate and print files</p></div><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">cat</span> /tmp/a.txt
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,4),i=[n];function d(r,o){return e(),t("div",null,i)}const h=a(c,[["render",d],["__file","cat.html.vue"]]);export{h as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-d6087b6c","path":"/doc/classloader-metaspace.html","title":"classloader-metaspace","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u8F93\u51FA\u5B57\u6BB5","slug":"\u8F93\u51FA\u5B57\u6BB5","link":"#\u8F93\u51FA\u5B57\u6BB5","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u67E5\u770B\u6240\u6709 ClassLoader metaspace \u7EDF\u8BA1","slug":"\u67E5\u770B\u6240\u6709-classloader-metaspace-\u7EDF\u8BA1","link":"#\u67E5\u770B\u6240\u6709-classloader-metaspace-\u7EDF\u8BA1","children":[]},{"level":3,"title":"\u6309 ClassLoader \u7C7B\u578B\u8FC7\u6EE4","slug":"\u6309-classloader-\u7C7B\u578B\u8FC7\u6EE4","link":"#\u6309-classloader-\u7C7B\u578B\u8FC7\u6EE4","children":[]},{"level":3,"title":"\u8F93\u51FA\u5B8C\u6574\u8BCA\u65AD\u5217","slug":"\u8F93\u51FA\u5B8C\u6574\u8BCA\u65AD\u5217","link":"#\u8F93\u51FA\u5B8C\u6574\u8BCA\u65AD\u5217","children":[]},{"level":3,"title":"\u9650\u5236\u8F93\u51FA\u884C\u6570","slug":"\u9650\u5236\u8F93\u51FA\u884C\u6570","link":"#\u9650\u5236\u8F93\u51FA\u884C\u6570","children":[]}]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/classloader-metaspace.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-d6087b6c","path":"/doc/classloader-metaspace.html","title":"classloader-metaspace","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u8F93\u51FA\u5B57\u6BB5","slug":"\u8F93\u51FA\u5B57\u6BB5","link":"#\u8F93\u51FA\u5B57\u6BB5","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u67E5\u770B\u6240\u6709 ClassLoader metaspace \u7EDF\u8BA1","slug":"\u67E5\u770B\u6240\u6709-classloader-metaspace-\u7EDF\u8BA1","link":"#\u67E5\u770B\u6240\u6709-classloader-metaspace-\u7EDF\u8BA1","children":[]},{"level":3,"title":"\u6309 ClassLoader \u7C7B\u578B\u8FC7\u6EE4","slug":"\u6309-classloader-\u7C7B\u578B\u8FC7\u6EE4","link":"#\u6309-classloader-\u7C7B\u578B\u8FC7\u6EE4","children":[]},{"level":3,"title":"\u8F93\u51FA\u5B8C\u6574\u8BCA\u65AD\u5217","slug":"\u8F93\u51FA\u5B8C\u6574\u8BCA\u65AD\u5217","link":"#\u8F93\u51FA\u5B8C\u6574\u8BCA\u65AD\u5217","children":[]},{"level":3,"title":"\u9650\u5236\u8F93\u51FA\u884C\u6570","slug":"\u9650\u5236\u8F93\u51FA\u884C\u6570","link":"#\u9650\u5236\u8F93\u51FA\u884C\u6570","children":[]}]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/classloader-metaspace.md","version":"4.3.5"}');export{e as data};
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import{_ as e,o as a,c as s,d as t}from"./app.524ecf5c.js";const l={},d=t(`<h1 id="classloader-metaspace" tabindex="-1"><a class="header-anchor" href="#classloader-metaspace" aria-hidden="true">#</a> classloader-metaspace</h1><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Show metaspace / class metadata statistics by ClassLoader instance.</p></div><p><code>classloader-metaspace</code> uses the JFR <code>jdk.ClassLoaderStatistics</code> event to collect metaspace statistics for each ClassLoaderData, then maps those rows back to Arthas ClassLoader hash, type and display name.</p><blockquote><p>Note: this command reports metaspace / class metadata memory. It does not report the retained size of all Java heap objects reachable from a ClassLoader.</p></blockquote><p><code>classloader-metaspace</code> depends on JFR. If the current JDK does not support JFR, the command is not registered.</p><h2 id="options" tabindex="-1"><a class="header-anchor" href="#options" aria-hidden="true">#</a> Options</h2><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;"><code>[c:]</code></td><td style="text-align:left;">ClassLoader hashcode, same format as <code>classloader -c</code></td></tr><tr><td style="text-align:right;"><code>[classLoaderClass:]</code></td><td style="text-align:left;">Filter by full ClassLoader class name</td></tr><tr><td style="text-align:right;"><code>[duration:]</code></td><td style="text-align:left;">JFR sampling duration, <code>2500ms</code> by default; supports <code>ms</code>, <code>s</code>, <code>m</code>; a plain number means milliseconds</td></tr><tr><td style="text-align:right;"><code>[period:]</code></td><td style="text-align:left;"><code>jdk.ClassLoaderStatistics</code> period, <code>500ms</code> by default; supports <code>ms</code>, <code>s</code>, <code>m</code></td></tr><tr><td style="text-align:right;"><code>[limit:]</code></td><td style="text-align:left;">Show only the first N rows after sorting by <code>chunkSize</code> descending</td></tr><tr><td style="text-align:right;"><code>[verbose:]</code></td><td style="text-align:left;">Show full diagnostic columns, including <code>classLoaderData</code>, <code>hiddenBlockSize</code> and <code>type</code>; <code>-v</code> is also supported</td></tr></tbody></table><h2 id="output" tabindex="-1"><a class="header-anchor" href="#output" aria-hidden="true">#</a> Output</h2><p>The default terminal table prioritizes core columns for daily troubleshooting. With <code>--verbose</code>, full diagnostic columns are shown. Long text columns, <code>type</code> and <code>name</code>, are shown on the right and may be truncated or hidden when the terminal is narrow.</p><table><thead><tr><th style="text-align:right;">Field</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;"><code>hash</code></td><td style="text-align:left;">Arthas ClassLoader hash</td></tr><tr><td style="text-align:right;"><code>classes</code></td><td style="text-align:left;">JFR <code>classCount</code>, the number of loaded classes</td></tr><tr><td style="text-align:right;"><code>chunkSize</code></td><td style="text-align:left;">Total allocated metaspace chunk size for the ClassLoaderData</td></tr><tr><td style="text-align:right;"><code>blockSize</code></td><td style="text-align:left;">Total used metaspace block size</td></tr><tr><td style="text-align:right;"><code>name</code></td><td style="text-align:left;">Display name. The command tries JFR name first, then falls back to <code>toString()</code></td></tr></tbody></table><p><code>--verbose</code> also shows:</p><table><thead><tr><th style="text-align:right;">Field</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;"><code>classLoaderData</code></td><td style="text-align:left;">HotSpot ClassLoaderData pointer</td></tr><tr><td style="text-align:right;"><code>hiddenBlockSize</code></td><td style="text-align:left;">Total metaspace block size used by hidden classes; on JDK 11 this is read from the JFR <code>anonymousBlockSize</code> field</td></tr><tr><td style="text-align:right;"><code>type</code></td><td style="text-align:left;">ClassLoader class name</td></tr></tbody></table><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><h3 id="show-all-classloader-metaspace-statistics" tabindex="-1"><a class="header-anchor" href="#show-all-classloader-metaspace-statistics" aria-hidden="true">#</a> Show all ClassLoader metaspace statistics</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader-metaspace
|
||||
import{_ as e,o as a,c as s,d as t}from"./app.e2427bec.js";const l={},d=t(`<h1 id="classloader-metaspace" tabindex="-1"><a class="header-anchor" href="#classloader-metaspace" aria-hidden="true">#</a> classloader-metaspace</h1><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Show metaspace / class metadata statistics by ClassLoader instance.</p></div><p><code>classloader-metaspace</code> uses the JFR <code>jdk.ClassLoaderStatistics</code> event to collect metaspace statistics for each ClassLoaderData, then maps those rows back to Arthas ClassLoader hash, type and display name.</p><blockquote><p>Note: this command reports metaspace / class metadata memory. It does not report the retained size of all Java heap objects reachable from a ClassLoader.</p></blockquote><p><code>classloader-metaspace</code> depends on JFR. If the current JDK does not support JFR, the command is not registered.</p><h2 id="options" tabindex="-1"><a class="header-anchor" href="#options" aria-hidden="true">#</a> Options</h2><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;"><code>[c:]</code></td><td style="text-align:left;">ClassLoader hashcode, same format as <code>classloader -c</code></td></tr><tr><td style="text-align:right;"><code>[classLoaderClass:]</code></td><td style="text-align:left;">Filter by full ClassLoader class name</td></tr><tr><td style="text-align:right;"><code>[duration:]</code></td><td style="text-align:left;">JFR sampling duration, <code>2500ms</code> by default; supports <code>ms</code>, <code>s</code>, <code>m</code>; a plain number means milliseconds</td></tr><tr><td style="text-align:right;"><code>[period:]</code></td><td style="text-align:left;"><code>jdk.ClassLoaderStatistics</code> period, <code>500ms</code> by default; supports <code>ms</code>, <code>s</code>, <code>m</code></td></tr><tr><td style="text-align:right;"><code>[limit:]</code></td><td style="text-align:left;">Show only the first N rows after sorting by <code>chunkSize</code> descending</td></tr><tr><td style="text-align:right;"><code>[verbose:]</code></td><td style="text-align:left;">Show full diagnostic columns, including <code>classLoaderData</code>, <code>hiddenBlockSize</code> and <code>type</code>; <code>-v</code> is also supported</td></tr></tbody></table><h2 id="output" tabindex="-1"><a class="header-anchor" href="#output" aria-hidden="true">#</a> Output</h2><p>The default terminal table prioritizes core columns for daily troubleshooting. With <code>--verbose</code>, full diagnostic columns are shown. Long text columns, <code>type</code> and <code>name</code>, are shown on the right and may be truncated or hidden when the terminal is narrow.</p><table><thead><tr><th style="text-align:right;">Field</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;"><code>hash</code></td><td style="text-align:left;">Arthas ClassLoader hash</td></tr><tr><td style="text-align:right;"><code>classes</code></td><td style="text-align:left;">JFR <code>classCount</code>, the number of loaded classes</td></tr><tr><td style="text-align:right;"><code>chunkSize</code></td><td style="text-align:left;">Total allocated metaspace chunk size for the ClassLoaderData</td></tr><tr><td style="text-align:right;"><code>blockSize</code></td><td style="text-align:left;">Total used metaspace block size</td></tr><tr><td style="text-align:right;"><code>name</code></td><td style="text-align:left;">Display name. The command tries JFR name first, then falls back to <code>toString()</code></td></tr></tbody></table><p><code>--verbose</code> also shows:</p><table><thead><tr><th style="text-align:right;">Field</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;"><code>classLoaderData</code></td><td style="text-align:left;">HotSpot ClassLoaderData pointer</td></tr><tr><td style="text-align:right;"><code>hiddenBlockSize</code></td><td style="text-align:left;">Total metaspace block size used by hidden classes; on JDK 11 this is read from the JFR <code>anonymousBlockSize</code> field</td></tr><tr><td style="text-align:right;"><code>type</code></td><td style="text-align:left;">ClassLoader class name</td></tr></tbody></table><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><h3 id="show-all-classloader-metaspace-statistics" tabindex="-1"><a class="header-anchor" href="#show-all-classloader-metaspace-statistics" aria-hidden="true">#</a> Show all ClassLoader metaspace statistics</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader-metaspace
|
||||
<span class="token builtin class-name">hash</span> classes chunkSize blockSize name
|
||||
68b31f0a <span class="token number">2115</span> <span class="token number">1048576</span> <span class="token number">823296</span> com.taobao.arthas.agent.ArthasClassloader@68b31f0a
|
||||
null <span class="token number">1861</span> <span class="token number">524288</span> <span class="token number">410624</span> BootstrapClassLoader
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
const l=JSON.parse('{"key":"v-6e8ffb5e","path":"/en/doc/classloader-metaspace.html","title":"classloader-metaspace","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Output","slug":"output","link":"#output","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Show all ClassLoader metaspace statistics","slug":"show-all-classloader-metaspace-statistics","link":"#show-all-classloader-metaspace-statistics","children":[]},{"level":3,"title":"Filter by ClassLoader type","slug":"filter-by-classloader-type","link":"#filter-by-classloader-type","children":[]},{"level":3,"title":"Show full diagnostic columns","slug":"show-full-diagnostic-columns","link":"#show-full-diagnostic-columns","children":[]},{"level":3,"title":"Limit output rows","slug":"limit-output-rows","link":"#limit-output-rows","children":[]}]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/classloader-metaspace.md","version":"4.3.3"}');export{l as data};
|
||||
const l=JSON.parse('{"key":"v-6e8ffb5e","path":"/en/doc/classloader-metaspace.html","title":"classloader-metaspace","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Output","slug":"output","link":"#output","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Show all ClassLoader metaspace statistics","slug":"show-all-classloader-metaspace-statistics","link":"#show-all-classloader-metaspace-statistics","children":[]},{"level":3,"title":"Filter by ClassLoader type","slug":"filter-by-classloader-type","link":"#filter-by-classloader-type","children":[]},{"level":3,"title":"Show full diagnostic columns","slug":"show-full-diagnostic-columns","link":"#show-full-diagnostic-columns","children":[]},{"level":3,"title":"Limit output rows","slug":"limit-output-rows","link":"#limit-output-rows","children":[]}]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/classloader-metaspace.md","version":"4.3.5"}');export{l as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as n,o as l,c as t,a,b as i,e as s,d as r,r as d}from"./app.524ecf5c.js";const c={},o=a("h1",{id:"classloader",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#classloader","aria-hidden":"true"},"#"),s(" classloader")],-1),u={href:"https://arthas.aliyun.com/doc/arthas-tutorials?language=en&id=command-classloader",target:"_blank",rel:"noopener noreferrer"},p=a("code",null,"classloader",-1),h=s(" online tutorial"),m=r(`<div class="custom-container tip"><p class="custom-container-title">TIP</p><p>View hierarchy, urls and classes-loading info for the class-loaders.</p></div><p><code>classloader</code> can search and print out the URLs for a specified resource from one particular classloader. It is quite handy when analyzing <code>ResourceNotFoundException</code>.</p><h2 id="options" tabindex="-1"><a class="header-anchor" href="#options" aria-hidden="true">#</a> Options</h2><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;">[l]</td><td style="text-align:left;">list all classloader instances</td></tr><tr><td style="text-align:right;">[t]</td><td style="text-align:left;">print classloader's hierarchy</td></tr><tr><td style="text-align:right;">[a]</td><td style="text-align:left;">list all the classes loaded by all the classloaders (use it with great caution since the output can be huge)</td></tr><tr><td style="text-align:right;">[c:]</td><td style="text-align:left;">print classloader's hashcode</td></tr><tr><td style="text-align:right;"><code>[classLoaderClass:]</code></td><td style="text-align:left;">The class name of the ClassLoader that executes the expression.</td></tr><tr><td style="text-align:right;"><code>[c: r:]</code></td><td style="text-align:left;">using ClassLoader to search resource</td></tr><tr><td style="text-align:right;"><code>[c: load:]</code></td><td style="text-align:left;">using ClassLoader to load class</td></tr></tbody></table><h3 id="url-classes-options" tabindex="-1"><a class="header-anchor" href="#url-classes-options" aria-hidden="true">#</a> <code>--url-classes</code> options</h3><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;"><code>--url-classes</code></td><td style="text-align:left;">Show relationship between loaded classes and <code>codeSource(URL/jar)</code> in a specific ClassLoader</td></tr><tr><td style="text-align:right;"><code>-d, --details</code></td><td style="text-align:left;">Details mode: list class names for each URL/jar (use <code>-n/--limit</code> to control output)</td></tr><tr><td style="text-align:right;"><code>--jar <kw></code></td><td style="text-align:left;">Filter jar(URL) by keyword (contains match by default)</td></tr><tr><td style="text-align:right;"><code>--class <kw></code></td><td style="text-align:left;">Filter classes by keyword/package (contains match by default)</td></tr><tr><td style="text-align:right;"><code>-E, --regex</code></td><td style="text-align:left;">Treat <code>--jar/--class</code> as regular expression (keyword match by default)</td></tr><tr><td style="text-align:right;"><code>-n, --limit <N></code></td><td style="text-align:left;">In details mode, show at most N classes per URL/jar (100 by default)</td></tr></tbody></table><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><h3 id="view-statistics-categorized-by-class-type" tabindex="-1"><a class="header-anchor" href="#view-statistics-categorized-by-class-type" aria-hidden="true">#</a> View statistics categorized by class type</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader
|
||||
import{_ as a,o as s,c as e,d as n}from"./app.e2427bec.js";const l={},t=n(`<h1 id="classloader" tabindex="-1"><a class="header-anchor" href="#classloader" aria-hidden="true">#</a> classloader</h1><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>View hierarchy, urls and classes-loading info for the class-loaders.</p></div><p><code>classloader</code> can search and print out the URLs for a specified resource from one particular classloader. It is quite handy when analyzing <code>ResourceNotFoundException</code>.</p><h2 id="options" tabindex="-1"><a class="header-anchor" href="#options" aria-hidden="true">#</a> Options</h2><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;">[l]</td><td style="text-align:left;">list all classloader instances</td></tr><tr><td style="text-align:right;">[t]</td><td style="text-align:left;">print classloader's hierarchy</td></tr><tr><td style="text-align:right;">[a]</td><td style="text-align:left;">list all the classes loaded by all the classloaders (use it with great caution since the output can be huge)</td></tr><tr><td style="text-align:right;">[c:]</td><td style="text-align:left;">print classloader's hashcode</td></tr><tr><td style="text-align:right;"><code>[classLoaderClass:]</code></td><td style="text-align:left;">The class name of the ClassLoader that executes the expression.</td></tr><tr><td style="text-align:right;"><code>[c: r:]</code></td><td style="text-align:left;">using ClassLoader to search resource</td></tr><tr><td style="text-align:right;"><code>[c: load:]</code></td><td style="text-align:left;">using ClassLoader to load class</td></tr></tbody></table><h3 id="url-classes-options" tabindex="-1"><a class="header-anchor" href="#url-classes-options" aria-hidden="true">#</a> <code>--url-classes</code> options</h3><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;"><code>--url-classes</code></td><td style="text-align:left;">Show relationship between loaded classes and <code>codeSource(URL/jar)</code> in a specific ClassLoader</td></tr><tr><td style="text-align:right;"><code>-d, --details</code></td><td style="text-align:left;">Details mode: list class names for each URL/jar (use <code>-n/--limit</code> to control output)</td></tr><tr><td style="text-align:right;"><code>--jar <kw></code></td><td style="text-align:left;">Filter jar(URL) by keyword (contains match by default)</td></tr><tr><td style="text-align:right;"><code>--class <kw></code></td><td style="text-align:left;">Filter classes by keyword/package (contains match by default)</td></tr><tr><td style="text-align:right;"><code>-E, --regex</code></td><td style="text-align:left;">Treat <code>--jar/--class</code> as regular expression (keyword match by default)</td></tr><tr><td style="text-align:right;"><code>-n, --limit <N></code></td><td style="text-align:left;">In details mode, show at most N classes per URL/jar (100 by default)</td></tr></tbody></table><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><h3 id="view-statistics-categorized-by-class-type" tabindex="-1"><a class="header-anchor" href="#view-statistics-categorized-by-class-type" aria-hidden="true">#</a> View statistics categorized by class type</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader
|
||||
name numberOfInstances loadedCountTotal
|
||||
com.taobao.arthas.agent.ArthasClassloader <span class="token number">1</span> <span class="token number">2115</span>
|
||||
BootstrapClassLoader <span class="token number">1</span> <span class="token number">1861</span>
|
||||
@@ -92,4 +92,4 @@ sun.misc.Launcher<span class="token variable">$AppClassLoader</span>@3d4eac69, h
|
||||
Affect<span class="token punctuation">(</span>row-cnt:2<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">3</span> ms.
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Filter by jar name keyword and show details (list class names):</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader <span class="token parameter variable">-c</span> 3d4eac69 --url-classes <span class="token parameter variable">-d</span> <span class="token parameter variable">--jar</span> math-game
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Filter further by package/keyword (will also output <code>matchedClassCount</code> for statistics):</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader <span class="token parameter variable">-c</span> 3d4eac69 --url-classes <span class="token parameter variable">--jar</span> spring-core <span class="token parameter variable">--class</span> org.springframework
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,34);function v(b,g){const e=d("ExternalLinkIcon");return l(),t("div",null,[o,a("p",null,[a("a",u,[p,h,i(e)])]),m])}const k=n(c,[["render",v],["__file","classloader.html.vue"]]);export{k as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,35),i=[t];function r(d,c){return s(),e("div",null,i)}const u=a(l,[["render",r],["__file","classloader.html.vue"]]);export{u as default};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as n,o as l,c as r,a,b as i,e as s,d as t,r as d}from"./app.524ecf5c.js";const c={},o=a("h1",{id:"classloader",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#classloader","aria-hidden":"true"},"#"),s(" classloader")],-1),u={href:"https://arthas.aliyun.com/doc/arthas-tutorials?language=cn&id=command-classloader",target:"_blank",rel:"noopener noreferrer"},p=a("code",null,"classloader",-1),v=s("\u5728\u7EBF\u6559\u7A0B"),m=t(`<div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u67E5\u770B classloader \u7684\u7EE7\u627F\u6811\uFF0Curls\uFF0C\u7C7B\u52A0\u8F7D\u4FE1\u606F</p></div><p><code>classloader</code> \u547D\u4EE4\u5C06 JVM \u4E2D\u6240\u6709\u7684 classloader \u7684\u4FE1\u606F\u7EDF\u8BA1\u51FA\u6765\uFF0C\u5E76\u53EF\u4EE5\u5C55\u793A\u7EE7\u627F\u6811\uFF0Curls \u7B49\u3002</p><p>\u53EF\u4EE5\u8BA9\u6307\u5B9A\u7684 classloader \u53BB getResources\uFF0C\u6253\u5370\u51FA\u6240\u6709\u67E5\u627E\u5230\u7684 resources \u7684 url\u3002\u5BF9\u4E8E<code>ResourceNotFoundException</code>\u6BD4\u8F83\u6709\u7528\u3002</p><h2 id="\u53C2\u6570\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#\u53C2\u6570\u8BF4\u660E" aria-hidden="true">#</a> \u53C2\u6570\u8BF4\u660E</h2><table><thead><tr><th style="text-align:right;">\u53C2\u6570\u540D\u79F0</th><th style="text-align:left;">\u53C2\u6570\u8BF4\u660E</th></tr></thead><tbody><tr><td style="text-align:right;">[l]</td><td style="text-align:left;">\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u8FDB\u884C\u7EDF\u8BA1</td></tr><tr><td style="text-align:right;">[t]</td><td style="text-align:left;">\u6253\u5370\u6240\u6709 ClassLoader \u7684\u7EE7\u627F\u6811</td></tr><tr><td style="text-align:right;">[a]</td><td style="text-align:left;">\u5217\u51FA\u6240\u6709 ClassLoader \u52A0\u8F7D\u7684\u7C7B\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528</td></tr><tr><td style="text-align:right;"><code>[c:]</code></td><td style="text-align:left;">ClassLoader \u7684 hashcode</td></tr><tr><td style="text-align:right;"><code>[classLoaderClass:]</code></td><td style="text-align:left;">\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name</td></tr><tr><td style="text-align:right;"><code>[c: r:]</code></td><td style="text-align:left;">\u7528 ClassLoader \u53BB\u67E5\u627E resource</td></tr><tr><td style="text-align:right;"><code>[c: load:]</code></td><td style="text-align:left;">\u7528 ClassLoader \u53BB\u52A0\u8F7D\u6307\u5B9A\u7684\u7C7B</td></tr></tbody></table><h3 id="url-classes-\u53C2\u6570\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#url-classes-\u53C2\u6570\u8BF4\u660E" aria-hidden="true">#</a> <code>--url-classes</code> \u53C2\u6570\u8BF4\u660E</h3><table><thead><tr><th style="text-align:right;">\u53C2\u6570\u540D\u79F0</th><th style="text-align:left;">\u53C2\u6570\u8BF4\u660E</th></tr></thead><tbody><tr><td style="text-align:right;"><code>--url-classes</code></td><td style="text-align:left;">\u7EDF\u8BA1\u6307\u5B9A ClassLoader \u4E2D\uFF0C\u5DF2\u52A0\u8F7D\u7C7B\u4E0E <code>codeSource(URL/jar)</code> \u7684\u5173\u7CFB</td></tr><tr><td style="text-align:right;"><code>-d, --details</code></td><td style="text-align:left;">\u8BE6\u60C5\u6A21\u5F0F\uFF1A\u5217\u51FA\u6BCF\u4E2A URL/jar \u52A0\u8F7D\u7684\u7C7B\u540D\uFF08\u5EFA\u8BAE\u914D\u5408 <code>-n/--limit</code> \u63A7\u5236\u8F93\u51FA\u91CF\uFF09</td></tr><tr><td style="text-align:right;"><code>--jar <kw></code></td><td style="text-align:left;">\u6309 jar \u5305\u540D/URL \u5173\u952E\u5B57\u8FC7\u6EE4\uFF08\u9ED8\u8BA4\u5305\u542B\u5339\u914D\uFF09</td></tr><tr><td style="text-align:right;"><code>--class <kw></code></td><td style="text-align:left;">\u6309\u7C7B\u540D/\u5305\u540D\u5173\u952E\u5B57\u8FC7\u6EE4\uFF08\u9ED8\u8BA4\u5305\u542B\u5339\u914D\uFF09</td></tr><tr><td style="text-align:right;"><code>-E, --regex</code></td><td style="text-align:left;"><code>--jar/--class</code> \u4F7F\u7528\u6B63\u5219\u5339\u914D\uFF08\u9ED8\u8BA4\u5173\u952E\u5B57\u5305\u542B\u5339\u914D\uFF09</td></tr><tr><td style="text-align:right;"><code>-n, --limit <N></code></td><td style="text-align:left;">\u8BE6\u60C5\u6A21\u5F0F\u4E0B\uFF0C\u6BCF\u4E2A URL/jar \u6700\u591A\u5C55\u793A N \u4E2A\u7C7B\uFF08100 \u9ED8\u8BA4\uFF09</td></tr></tbody></table><h2 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h2><h3 id="\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F" tabindex="-1"><a class="header-anchor" href="#\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F" aria-hidden="true">#</a> \u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader
|
||||
import{_ as a,o as s,c as e,d as n}from"./app.e2427bec.js";const l={},r=n(`<h1 id="classloader" tabindex="-1"><a class="header-anchor" href="#classloader" aria-hidden="true">#</a> classloader</h1><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u67E5\u770B classloader \u7684\u7EE7\u627F\u6811\uFF0Curls\uFF0C\u7C7B\u52A0\u8F7D\u4FE1\u606F</p></div><p><code>classloader</code> \u547D\u4EE4\u5C06 JVM \u4E2D\u6240\u6709\u7684 classloader \u7684\u4FE1\u606F\u7EDF\u8BA1\u51FA\u6765\uFF0C\u5E76\u53EF\u4EE5\u5C55\u793A\u7EE7\u627F\u6811\uFF0Curls \u7B49\u3002</p><p>\u53EF\u4EE5\u8BA9\u6307\u5B9A\u7684 classloader \u53BB getResources\uFF0C\u6253\u5370\u51FA\u6240\u6709\u67E5\u627E\u5230\u7684 resources \u7684 url\u3002\u5BF9\u4E8E<code>ResourceNotFoundException</code>\u6BD4\u8F83\u6709\u7528\u3002</p><h2 id="\u53C2\u6570\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#\u53C2\u6570\u8BF4\u660E" aria-hidden="true">#</a> \u53C2\u6570\u8BF4\u660E</h2><table><thead><tr><th style="text-align:right;">\u53C2\u6570\u540D\u79F0</th><th style="text-align:left;">\u53C2\u6570\u8BF4\u660E</th></tr></thead><tbody><tr><td style="text-align:right;">[l]</td><td style="text-align:left;">\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u8FDB\u884C\u7EDF\u8BA1</td></tr><tr><td style="text-align:right;">[t]</td><td style="text-align:left;">\u6253\u5370\u6240\u6709 ClassLoader \u7684\u7EE7\u627F\u6811</td></tr><tr><td style="text-align:right;">[a]</td><td style="text-align:left;">\u5217\u51FA\u6240\u6709 ClassLoader \u52A0\u8F7D\u7684\u7C7B\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528</td></tr><tr><td style="text-align:right;"><code>[c:]</code></td><td style="text-align:left;">ClassLoader \u7684 hashcode</td></tr><tr><td style="text-align:right;"><code>[classLoaderClass:]</code></td><td style="text-align:left;">\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name</td></tr><tr><td style="text-align:right;"><code>[c: r:]</code></td><td style="text-align:left;">\u7528 ClassLoader \u53BB\u67E5\u627E resource</td></tr><tr><td style="text-align:right;"><code>[c: load:]</code></td><td style="text-align:left;">\u7528 ClassLoader \u53BB\u52A0\u8F7D\u6307\u5B9A\u7684\u7C7B</td></tr></tbody></table><h3 id="url-classes-\u53C2\u6570\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#url-classes-\u53C2\u6570\u8BF4\u660E" aria-hidden="true">#</a> <code>--url-classes</code> \u53C2\u6570\u8BF4\u660E</h3><table><thead><tr><th style="text-align:right;">\u53C2\u6570\u540D\u79F0</th><th style="text-align:left;">\u53C2\u6570\u8BF4\u660E</th></tr></thead><tbody><tr><td style="text-align:right;"><code>--url-classes</code></td><td style="text-align:left;">\u7EDF\u8BA1\u6307\u5B9A ClassLoader \u4E2D\uFF0C\u5DF2\u52A0\u8F7D\u7C7B\u4E0E <code>codeSource(URL/jar)</code> \u7684\u5173\u7CFB</td></tr><tr><td style="text-align:right;"><code>-d, --details</code></td><td style="text-align:left;">\u8BE6\u60C5\u6A21\u5F0F\uFF1A\u5217\u51FA\u6BCF\u4E2A URL/jar \u52A0\u8F7D\u7684\u7C7B\u540D\uFF08\u5EFA\u8BAE\u914D\u5408 <code>-n/--limit</code> \u63A7\u5236\u8F93\u51FA\u91CF\uFF09</td></tr><tr><td style="text-align:right;"><code>--jar <kw></code></td><td style="text-align:left;">\u6309 jar \u5305\u540D/URL \u5173\u952E\u5B57\u8FC7\u6EE4\uFF08\u9ED8\u8BA4\u5305\u542B\u5339\u914D\uFF09</td></tr><tr><td style="text-align:right;"><code>--class <kw></code></td><td style="text-align:left;">\u6309\u7C7B\u540D/\u5305\u540D\u5173\u952E\u5B57\u8FC7\u6EE4\uFF08\u9ED8\u8BA4\u5305\u542B\u5339\u914D\uFF09</td></tr><tr><td style="text-align:right;"><code>-E, --regex</code></td><td style="text-align:left;"><code>--jar/--class</code> \u4F7F\u7528\u6B63\u5219\u5339\u914D\uFF08\u9ED8\u8BA4\u5173\u952E\u5B57\u5305\u542B\u5339\u914D\uFF09</td></tr><tr><td style="text-align:right;"><code>-n, --limit <N></code></td><td style="text-align:left;">\u8BE6\u60C5\u6A21\u5F0F\u4E0B\uFF0C\u6BCF\u4E2A URL/jar \u6700\u591A\u5C55\u793A N \u4E2A\u7C7B\uFF08100 \u9ED8\u8BA4\uFF09</td></tr></tbody></table><h2 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h2><h3 id="\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F" tabindex="-1"><a class="header-anchor" href="#\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F" aria-hidden="true">#</a> \u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader
|
||||
name numberOfInstances loadedCountTotal
|
||||
com.taobao.arthas.agent.ArthasClassloader <span class="token number">1</span> <span class="token number">2115</span>
|
||||
BootstrapClassLoader <span class="token number">1</span> <span class="token number">1861</span>
|
||||
@@ -92,4 +92,4 @@ sun.misc.Launcher<span class="token variable">$AppClassLoader</span>@3d4eac69, h
|
||||
Affect<span class="token punctuation">(</span>row-cnt:2<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">3</span> ms.
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u6309 jar \u5305\u540D\u5173\u952E\u5B57\u8FC7\u6EE4\u5E76\u67E5\u770B\u8BE6\u60C5\uFF08\u5217\u51FA\u7C7B\u540D\uFF09\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader <span class="token parameter variable">-c</span> 3d4eac69 --url-classes <span class="token parameter variable">-d</span> <span class="token parameter variable">--jar</span> math-game
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u8FDB\u4E00\u6B65\u6309\u5305\u540D/\u5173\u952E\u5B57\u8FC7\u6EE4\uFF08\u540C\u65F6\u4F1A\u8F93\u51FA <code>matchedClassCount</code> \u4FBF\u4E8E\u7EDF\u8BA1\uFF09\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader <span class="token parameter variable">-c</span> 3d4eac69 --url-classes <span class="token parameter variable">--jar</span> spring-core <span class="token parameter variable">--class</span> org.springframework
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,35);function b(h,g){const e=d("ExternalLinkIcon");return l(),r("div",null,[o,a("p",null,[a("a",u,[p,v,i(e)])]),m])}const f=n(c,[["render",b],["__file","classloader.html.vue"]]);export{f as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,36),i=[r];function t(d,c){return s(),e("div",null,i)}const u=a(l,[["render",t],["__file","classloader.html.vue"]]);export{u as default};
|
||||
@@ -1 +1 @@
|
||||
const l=JSON.parse('{"key":"v-49b1709e","path":"/doc/classloader.html","title":"classloader","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[{"level":3,"title":"--url-classes \u53C2\u6570\u8BF4\u660E","slug":"url-classes-\u53C2\u6570\u8BF4\u660E","link":"#url-classes-\u53C2\u6570\u8BF4\u660E","children":[]}]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","slug":"\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","link":"#\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","children":[]},{"level":3,"title":"\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","slug":"\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","link":"#\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","children":[]},{"level":3,"title":"\u67E5\u770B ClassLoader \u7684\u7EE7\u627F\u6811","slug":"\u67E5\u770B-classloader-\u7684\u7EE7\u627F\u6811","link":"#\u67E5\u770B-classloader-\u7684\u7EE7\u627F\u6811","children":[]},{"level":3,"title":"\u67E5\u770B URLClassLoader \u5B9E\u9645\u7684 urls","slug":"\u67E5\u770B-urlclassloader-\u5B9E\u9645\u7684-urls","link":"#\u67E5\u770B-urlclassloader-\u5B9E\u9645\u7684-urls","children":[]},{"level":3,"title":"\u4F7F\u7528 ClassLoader \u53BB\u67E5\u627E resource","slug":"\u4F7F\u7528-classloader-\u53BB\u67E5\u627E-resource","link":"#\u4F7F\u7528-classloader-\u53BB\u67E5\u627E-resource","children":[]},{"level":3,"title":"\u4F7F\u7528 ClassLoader \u53BB\u52A0\u8F7D\u7C7B","slug":"\u4F7F\u7528-classloader-\u53BB\u52A0\u8F7D\u7C7B","link":"#\u4F7F\u7528-classloader-\u53BB\u52A0\u8F7D\u7C7B","children":[]},{"level":3,"title":"\u7EDF\u8BA1 ClassLoader \u5B9E\u9645\u4F7F\u7528 URL \u548C\u672A\u4F7F\u7528\u7684 URL","slug":"\u7EDF\u8BA1-classloader-\u5B9E\u9645\u4F7F\u7528-url-\u548C\u672A\u4F7F\u7528\u7684-url","link":"#\u7EDF\u8BA1-classloader-\u5B9E\u9645\u4F7F\u7528-url-\u548C\u672A\u4F7F\u7528\u7684-url","children":[]},{"level":3,"title":"\u67E5\u770B\u6307\u5B9A ClassLoader \u7684\u7C7B\u4E0E jar(URL) \u7684\u5173\u7CFB\u5217\u8868","slug":"\u67E5\u770B\u6307\u5B9A-classloader-\u7684\u7C7B\u4E0E-jar-url-\u7684\u5173\u7CFB\u5217\u8868","link":"#\u67E5\u770B\u6307\u5B9A-classloader-\u7684\u7C7B\u4E0E-jar-url-\u7684\u5173\u7CFB\u5217\u8868","children":[]}]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/classloader.md","version":"4.3.3"}');export{l as data};
|
||||
const l=JSON.parse('{"key":"v-49b1709e","path":"/doc/classloader.html","title":"classloader","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[{"level":3,"title":"--url-classes \u53C2\u6570\u8BF4\u660E","slug":"url-classes-\u53C2\u6570\u8BF4\u660E","link":"#url-classes-\u53C2\u6570\u8BF4\u660E","children":[]}]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","slug":"\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","link":"#\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","children":[]},{"level":3,"title":"\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","slug":"\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","link":"#\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","children":[]},{"level":3,"title":"\u67E5\u770B ClassLoader \u7684\u7EE7\u627F\u6811","slug":"\u67E5\u770B-classloader-\u7684\u7EE7\u627F\u6811","link":"#\u67E5\u770B-classloader-\u7684\u7EE7\u627F\u6811","children":[]},{"level":3,"title":"\u67E5\u770B URLClassLoader \u5B9E\u9645\u7684 urls","slug":"\u67E5\u770B-urlclassloader-\u5B9E\u9645\u7684-urls","link":"#\u67E5\u770B-urlclassloader-\u5B9E\u9645\u7684-urls","children":[]},{"level":3,"title":"\u4F7F\u7528 ClassLoader \u53BB\u67E5\u627E resource","slug":"\u4F7F\u7528-classloader-\u53BB\u67E5\u627E-resource","link":"#\u4F7F\u7528-classloader-\u53BB\u67E5\u627E-resource","children":[]},{"level":3,"title":"\u4F7F\u7528 ClassLoader \u53BB\u52A0\u8F7D\u7C7B","slug":"\u4F7F\u7528-classloader-\u53BB\u52A0\u8F7D\u7C7B","link":"#\u4F7F\u7528-classloader-\u53BB\u52A0\u8F7D\u7C7B","children":[]},{"level":3,"title":"\u7EDF\u8BA1 ClassLoader \u5B9E\u9645\u4F7F\u7528 URL \u548C\u672A\u4F7F\u7528\u7684 URL","slug":"\u7EDF\u8BA1-classloader-\u5B9E\u9645\u4F7F\u7528-url-\u548C\u672A\u4F7F\u7528\u7684-url","link":"#\u7EDF\u8BA1-classloader-\u5B9E\u9645\u4F7F\u7528-url-\u548C\u672A\u4F7F\u7528\u7684-url","children":[]},{"level":3,"title":"\u67E5\u770B\u6307\u5B9A ClassLoader \u7684\u7C7B\u4E0E jar(URL) \u7684\u5173\u7CFB\u5217\u8868","slug":"\u67E5\u770B\u6307\u5B9A-classloader-\u7684\u7C7B\u4E0E-jar-url-\u7684\u5173\u7CFB\u5217\u8868","link":"#\u67E5\u770B\u6307\u5B9A-classloader-\u7684\u7C7B\u4E0E-jar-url-\u7684\u5173\u7CFB\u5217\u8868","children":[]}]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/classloader.md","version":"4.3.5"}');export{l as data};
|
||||
@@ -1 +1 @@
|
||||
const s=JSON.parse('{"key":"v-fc1b9a9c","path":"/en/doc/classloader.html","title":"classloader","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[{"level":3,"title":"--url-classes options","slug":"url-classes-options","link":"#url-classes-options","children":[]}]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"View statistics categorized by class type","slug":"view-statistics-categorized-by-class-type","link":"#view-statistics-categorized-by-class-type","children":[]},{"level":3,"title":"View statistics categorized by loaded classes number","slug":"view-statistics-categorized-by-loaded-classes-number","link":"#view-statistics-categorized-by-loaded-classes-number","children":[]},{"level":3,"title":"View class-loaders hierarchy","slug":"view-class-loaders-hierarchy","link":"#view-class-loaders-hierarchy","children":[]},{"level":3,"title":"Show the URLs of the URLClassLoader","slug":"show-the-urls-of-the-urlclassloader","link":"#show-the-urls-of-the-urlclassloader","children":[]},{"level":3,"title":"Use the classloader to load resource","slug":"use-the-classloader-to-load-resource","link":"#use-the-classloader-to-load-resource","children":[]},{"level":3,"title":"Use the classloader to load class","slug":"use-the-classloader-to-load-class","link":"#use-the-classloader-to-load-class","children":[]},{"level":3,"title":"Statistics ClassLoader actually used URLs and unused URLs","slug":"statistics-classloader-actually-used-urls-and-unused-urls","link":"#statistics-classloader-actually-used-urls-and-unused-urls","children":[]},{"level":3,"title":"Show class-to-jar(URL) relationship for a specific ClassLoader","slug":"show-class-to-jar-url-relationship-for-a-specific-classloader","link":"#show-class-to-jar-url-relationship-for-a-specific-classloader","children":[]}]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/classloader.md","version":"4.3.3"}');export{s as data};
|
||||
const s=JSON.parse('{"key":"v-fc1b9a9c","path":"/en/doc/classloader.html","title":"classloader","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[{"level":3,"title":"--url-classes options","slug":"url-classes-options","link":"#url-classes-options","children":[]}]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"View statistics categorized by class type","slug":"view-statistics-categorized-by-class-type","link":"#view-statistics-categorized-by-class-type","children":[]},{"level":3,"title":"View statistics categorized by loaded classes number","slug":"view-statistics-categorized-by-loaded-classes-number","link":"#view-statistics-categorized-by-loaded-classes-number","children":[]},{"level":3,"title":"View class-loaders hierarchy","slug":"view-class-loaders-hierarchy","link":"#view-class-loaders-hierarchy","children":[]},{"level":3,"title":"Show the URLs of the URLClassLoader","slug":"show-the-urls-of-the-urlclassloader","link":"#show-the-urls-of-the-urlclassloader","children":[]},{"level":3,"title":"Use the classloader to load resource","slug":"use-the-classloader-to-load-resource","link":"#use-the-classloader-to-load-resource","children":[]},{"level":3,"title":"Use the classloader to load class","slug":"use-the-classloader-to-load-class","link":"#use-the-classloader-to-load-class","children":[]},{"level":3,"title":"Statistics ClassLoader actually used URLs and unused URLs","slug":"statistics-classloader-actually-used-urls-and-unused-urls","link":"#statistics-classloader-actually-used-urls-and-unused-urls","children":[]},{"level":3,"title":"Show class-to-jar(URL) relationship for a specific ClassLoader","slug":"show-class-to-jar-url-relationship-for-a-specific-classloader","link":"#show-class-to-jar-url-relationship-for-a-specific-classloader","children":[]}]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/classloader.md","version":"4.3.5"}');export{s as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as e,o as t,c,a as s,e as o}from"./app.524ecf5c.js";const n={},a=s("h1",{id:"cls",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#cls","aria-hidden":"true"},"#"),o(" cls")],-1),l=s("p",null,"\u6E05\u7A7A\u5F53\u524D\u5C4F\u5E55\u533A\u57DF\u3002",-1),r=s("div",{class:"custom-container tip"},[s("p",{class:"custom-container-title"},"\u63D0\u793A"),s("p",null,`\u975E\u7EC8\u7AEF\u6A21\u5F0F\u4E0B\u4F7F\u7528 cls \u6307\u4EE4\uFF0C\u4F1A\u63D0\u793A"Command 'cls' is only support tty session."\u3002`)],-1),i=[a,l,r];function _(d,h){return t(),c("div",null,i)}const m=e(n,[["render",_],["__file","cls.html.vue"]]);export{m as default};
|
||||
import{_ as e,o as t,c,a as s,e as o}from"./app.e2427bec.js";const n={},a=s("h1",{id:"cls",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#cls","aria-hidden":"true"},"#"),o(" cls")],-1),l=s("p",null,"\u6E05\u7A7A\u5F53\u524D\u5C4F\u5E55\u533A\u57DF\u3002",-1),r=s("div",{class:"custom-container tip"},[s("p",{class:"custom-container-title"},"\u63D0\u793A"),s("p",null,`\u975E\u7EC8\u7AEF\u6A21\u5F0F\u4E0B\u4F7F\u7528 cls \u6307\u4EE4\uFF0C\u4F1A\u63D0\u793A"Command 'cls' is only support tty session."\u3002`)],-1),i=[a,l,r];function _(d,h){return t(),c("div",null,i)}const m=e(n,[["render",_],["__file","cls.html.vue"]]);export{m as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-ad1b2b42","path":"/doc/cls.html","title":"cls","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/cls.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-ad1b2b42","path":"/doc/cls.html","title":"cls","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/cls.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as t,o as s,c,a as e,e as o}from"./app.524ecf5c.js";const n={},a=e("h1",{id:"cls",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cls","aria-hidden":"true"},"#"),o(" cls")],-1),l=e("p",null,"clear current console.",-1),r=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,`if not in tty mode,it will warn "Command 'cls' is only support tty session.".`)],-1),i=[a,l,r];function _(d,h){return s(),c("div",null,i)}const m=t(n,[["render",_],["__file","cls.html.vue"]]);export{m as default};
|
||||
import{_ as t,o as s,c,a as e,e as o}from"./app.e2427bec.js";const n={},a=e("h1",{id:"cls",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cls","aria-hidden":"true"},"#"),o(" cls")],-1),l=e("p",null,"clear current console.",-1),r=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,`if not in tty mode,it will warn "Command 'cls' is only support tty session.".`)],-1),i=[a,l,r];function _(d,h){return s(),c("div",null,i)}const m=t(n,[["render",_],["__file","cls.html.vue"]]);export{m as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-ae5eff1a","path":"/en/doc/cls.html","title":"cls","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/cls.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-ae5eff1a","path":"/en/doc/cls.html","title":"cls","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/cls.md","version":"4.3.5"}');export{e as data};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-12153166","path":"/en/doc/commands.html","title":"All Commands","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"jvm - related","slug":"jvm-related","link":"#jvm-related","children":[]},{"level":2,"title":"class/classloader - related","slug":"class-classloader-related","link":"#class-classloader-related","children":[]},{"level":2,"title":"monitor/watch/trace - related","slug":"monitor-watch-trace-related","link":"#monitor-watch-trace-related","children":[]},{"level":2,"title":"profiler/flame graph","slug":"profiler-flame-graph","link":"#profiler-flame-graph","children":[]},{"level":2,"title":"authentication","slug":"authentication","link":"#authentication","children":[]},{"level":2,"title":"options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Extension commands","slug":"extension-commands","link":"#extension-commands","children":[]},{"level":2,"title":"pipe","slug":"pipe","link":"#pipe","children":[]},{"level":2,"title":"async jobs","slug":"async-jobs","link":"#async-jobs","children":[]},{"level":2,"title":"Basic Arthas Commands","slug":"basic-arthas-commands","link":"#basic-arthas-commands","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/commands.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-12153166","path":"/en/doc/commands.html","title":"All Commands","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"jvm - related","slug":"jvm-related","link":"#jvm-related","children":[]},{"level":2,"title":"class/classloader - related","slug":"class-classloader-related","link":"#class-classloader-related","children":[]},{"level":2,"title":"monitor/watch/trace - related","slug":"monitor-watch-trace-related","link":"#monitor-watch-trace-related","children":[]},{"level":2,"title":"profiler/flame graph","slug":"profiler-flame-graph","link":"#profiler-flame-graph","children":[]},{"level":2,"title":"authentication","slug":"authentication","link":"#authentication","children":[]},{"level":2,"title":"options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Extension commands","slug":"extension-commands","link":"#extension-commands","children":[]},{"level":2,"title":"pipe","slug":"pipe","link":"#pipe","children":[]},{"level":2,"title":"async jobs","slug":"async-jobs","link":"#async-jobs","children":[]},{"level":2,"title":"Basic Arthas Commands","slug":"basic-arthas-commands","link":"#basic-arthas-commands","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/commands.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const l=JSON.parse('{"key":"v-5ed4d0e1","path":"/doc/commands.html","title":"\u547D\u4EE4\u5217\u8868","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"jvm \u76F8\u5173","slug":"jvm-\u76F8\u5173","link":"#jvm-\u76F8\u5173","children":[]},{"level":2,"title":"class/classloader \u76F8\u5173","slug":"class-classloader-\u76F8\u5173","link":"#class-classloader-\u76F8\u5173","children":[]},{"level":2,"title":"monitor/watch/trace \u76F8\u5173","slug":"monitor-watch-trace-\u76F8\u5173","link":"#monitor-watch-trace-\u76F8\u5173","children":[]},{"level":2,"title":"profiler/\u706B\u7130\u56FE","slug":"profiler-\u706B\u7130\u56FE","link":"#profiler-\u706B\u7130\u56FE","children":[]},{"level":2,"title":"\u9274\u6743","slug":"\u9274\u6743","link":"#\u9274\u6743","children":[]},{"level":2,"title":"options","slug":"options","link":"#options","children":[]},{"level":2,"title":"\u6269\u5C55\u547D\u4EE4","slug":"\u6269\u5C55\u547D\u4EE4","link":"#\u6269\u5C55\u547D\u4EE4","children":[]},{"level":2,"title":"\u7BA1\u9053","slug":"\u7BA1\u9053","link":"#\u7BA1\u9053","children":[]},{"level":2,"title":"\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","slug":"\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","link":"#\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","children":[]},{"level":2,"title":"\u57FA\u7840\u547D\u4EE4","slug":"\u57FA\u7840\u547D\u4EE4","link":"#\u57FA\u7840\u547D\u4EE4","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/commands.md","version":"4.3.3"}');export{l as data};
|
||||
const l=JSON.parse('{"key":"v-5ed4d0e1","path":"/doc/commands.html","title":"\u547D\u4EE4\u5217\u8868","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"jvm \u76F8\u5173","slug":"jvm-\u76F8\u5173","link":"#jvm-\u76F8\u5173","children":[]},{"level":2,"title":"class/classloader \u76F8\u5173","slug":"class-classloader-\u76F8\u5173","link":"#class-classloader-\u76F8\u5173","children":[]},{"level":2,"title":"monitor/watch/trace \u76F8\u5173","slug":"monitor-watch-trace-\u76F8\u5173","link":"#monitor-watch-trace-\u76F8\u5173","children":[]},{"level":2,"title":"profiler/\u706B\u7130\u56FE","slug":"profiler-\u706B\u7130\u56FE","link":"#profiler-\u706B\u7130\u56FE","children":[]},{"level":2,"title":"\u9274\u6743","slug":"\u9274\u6743","link":"#\u9274\u6743","children":[]},{"level":2,"title":"options","slug":"options","link":"#options","children":[]},{"level":2,"title":"\u6269\u5C55\u547D\u4EE4","slug":"\u6269\u5C55\u547D\u4EE4","link":"#\u6269\u5C55\u547D\u4EE4","children":[]},{"level":2,"title":"\u7BA1\u9053","slug":"\u7BA1\u9053","link":"#\u7BA1\u9053","children":[]},{"level":2,"title":"\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","slug":"\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","link":"#\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","children":[]},{"level":2,"title":"\u57FA\u7840\u547D\u4EE4","slug":"\u57FA\u7840\u547D\u4EE4","link":"#\u57FA\u7840\u547D\u4EE4","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/commands.md","version":"4.3.5"}');export{l as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as r,a as i,b as o,c as n,d as h,e as c}from"./qqgroup3_qr.a24fdd88.js";import{_ as l,o as _,c as d,a,b as t,e,d as p,r as u}from"./app.524ecf5c.js";const m="/images/qrcode_gongzhonghao.jpg",g="/images/qqgroup2_qr.jpg",f={},b=a("h1",{id:"\u8054\u7CFB\u6211\u4EEC",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u8054\u7CFB\u6211\u4EEC","aria-hidden":"true"},"#"),e(" \u8054\u7CFB\u6211\u4EEC")],-1),x=a("h3",{id:"\u62DB\u8058",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u62DB\u8058","aria-hidden":"true"},"#"),e(" \u62DB\u8058")],-1),q={href:"https://mp.weixin.qq.com/s/XQv8GnqGT3pzceVwzeiy-A",target:"_blank",rel:"noopener noreferrer"},A=e("\u671F\u5F85\u4F60\u7684\u52A0\u5165"),Q=a("h3",{id:"issues",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#issues","aria-hidden":"true"},"#"),e(" Issues")],-1),k=e("\u4F7F\u7528\u7591\u95EE\uFF0C\u610F\u89C1\u53EF\u4EE5\u76F4\u63A5\u5728 Issues \u91CC\u63D0\u51FA\uFF1A "),V={href:"https://github.com/alibaba/arthas/issues",target:"_blank",rel:"noopener noreferrer"},v=e("https://github.com/alibaba/arthas/issues"),I=p('<h3 id="\u5FAE\u4FE1\u516C\u4F17\u53F7" tabindex="-1"><a class="header-anchor" href="#\u5FAE\u4FE1\u516C\u4F17\u53F7" aria-hidden="true">#</a> \u5FAE\u4FE1\u516C\u4F17\u53F7</h3><p>\u6B22\u8FCE\u5173\u6CE8\u516C\u4F17\u53F7\uFF0C\u83B7\u53D6 Arthas \u9879\u76EE\u7684\u4FE1\u606F\u3001\u6E90\u7801\u5206\u6790\u3001\u6848\u4F8B\u5B9E\u8DF5\u3002</p><p><img src="'+m+'" alt=""></p><h3 id="\u9489\u9489\u7FA4" tabindex="-1"><a class="header-anchor" href="#\u9489\u9489\u7FA4" aria-hidden="true">#</a> \u9489\u9489\u7FA4</h3><ul><li>Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4\uFF1A 21965291 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002\uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 4 \u7FA4\uFF09</li></ul><p><img src="'+r+'" alt=""></p><ul><li>Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4 2\uFF1A 30707824 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002\uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 4 \u7FA4\uFF09</li></ul><p><img src="'+i+'" alt=""></p><ul><li>Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4 3\uFF1A 17605006847 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002\uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 4 \u7FA4\uFF09</li></ul><p><img src="'+o+'" alt=""></p><ul><li>Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4 4\uFF1A 41920010710 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002</li></ul><p><img src="'+n+'" alt=""></p><h3 id="qq-\u7FA4" tabindex="-1"><a class="header-anchor" href="#qq-\u7FA4" aria-hidden="true">#</a> QQ \u7FA4</h3><p>Arthas \u5F00\u6E90\u4EA4\u6D41 QQ \u7FA4\uFF1A 916328269 \uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 3 \u7FA4\uFF09</p><p><img src="'+h+'" alt=""></p><p>Arthas \u5F00\u6E90\u4EA4\u6D41 QQ \u7FA4 2\uFF1A 854625984</p><p><img src="'+g+'" alt=""></p><p>Arthas \u5F00\u6E90\u4EA4\u6D41 QQ \u7FA4 3\uFF1A 672077388</p><p><img src="'+c+'" alt=""></p>',19);function N(z,B){const s=u("ExternalLinkIcon");return _(),d("div",null,[b,x,a("ul",null,[a("li",null,[a("a",q,[A,t(s)])])]),Q,a("p",null,[k,a("a",V,[v,t(s)])]),I])}const w=l(f,[["render",N],["__file","contact-us.html.vue"]]);export{w as default};
|
||||
import{_ as r,a as i,b as o,c as n,d as h,e as c}from"./qqgroup3_qr.a24fdd88.js";import{_ as l,o as _,c as d,a,b as t,e,d as p,r as u}from"./app.e2427bec.js";const m="/images/qrcode_gongzhonghao.jpg",g="/images/qqgroup2_qr.jpg",f={},b=a("h1",{id:"\u8054\u7CFB\u6211\u4EEC",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u8054\u7CFB\u6211\u4EEC","aria-hidden":"true"},"#"),e(" \u8054\u7CFB\u6211\u4EEC")],-1),x=a("h3",{id:"\u62DB\u8058",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u62DB\u8058","aria-hidden":"true"},"#"),e(" \u62DB\u8058")],-1),q={href:"https://mp.weixin.qq.com/s/XQv8GnqGT3pzceVwzeiy-A",target:"_blank",rel:"noopener noreferrer"},A=e("\u671F\u5F85\u4F60\u7684\u52A0\u5165"),Q=a("h3",{id:"issues",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#issues","aria-hidden":"true"},"#"),e(" Issues")],-1),k=e("\u4F7F\u7528\u7591\u95EE\uFF0C\u610F\u89C1\u53EF\u4EE5\u76F4\u63A5\u5728 Issues \u91CC\u63D0\u51FA\uFF1A "),V={href:"https://github.com/alibaba/arthas/issues",target:"_blank",rel:"noopener noreferrer"},v=e("https://github.com/alibaba/arthas/issues"),I=p('<h3 id="\u5FAE\u4FE1\u516C\u4F17\u53F7" tabindex="-1"><a class="header-anchor" href="#\u5FAE\u4FE1\u516C\u4F17\u53F7" aria-hidden="true">#</a> \u5FAE\u4FE1\u516C\u4F17\u53F7</h3><p>\u6B22\u8FCE\u5173\u6CE8\u516C\u4F17\u53F7\uFF0C\u83B7\u53D6 Arthas \u9879\u76EE\u7684\u4FE1\u606F\u3001\u6E90\u7801\u5206\u6790\u3001\u6848\u4F8B\u5B9E\u8DF5\u3002</p><p><img src="'+m+'" alt=""></p><h3 id="\u9489\u9489\u7FA4" tabindex="-1"><a class="header-anchor" href="#\u9489\u9489\u7FA4" aria-hidden="true">#</a> \u9489\u9489\u7FA4</h3><ul><li>Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4\uFF1A 21965291 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002\uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 4 \u7FA4\uFF09</li></ul><p><img src="'+r+'" alt=""></p><ul><li>Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4 2\uFF1A 30707824 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002\uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 4 \u7FA4\uFF09</li></ul><p><img src="'+i+'" alt=""></p><ul><li>Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4 3\uFF1A 17605006847 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002\uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 4 \u7FA4\uFF09</li></ul><p><img src="'+o+'" alt=""></p><ul><li>Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4 4\uFF1A 41920010710 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002</li></ul><p><img src="'+n+'" alt=""></p><h3 id="qq-\u7FA4" tabindex="-1"><a class="header-anchor" href="#qq-\u7FA4" aria-hidden="true">#</a> QQ \u7FA4</h3><p>Arthas \u5F00\u6E90\u4EA4\u6D41 QQ \u7FA4\uFF1A 916328269 \uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 3 \u7FA4\uFF09</p><p><img src="'+h+'" alt=""></p><p>Arthas \u5F00\u6E90\u4EA4\u6D41 QQ \u7FA4 2\uFF1A 854625984</p><p><img src="'+g+'" alt=""></p><p>Arthas \u5F00\u6E90\u4EA4\u6D41 QQ \u7FA4 3\uFF1A 672077388</p><p><img src="'+c+'" alt=""></p>',19);function N(z,B){const s=u("ExternalLinkIcon");return _(),d("div",null,[b,x,a("ul",null,[a("li",null,[a("a",q,[A,t(s)])])]),Q,a("p",null,[k,a("a",V,[v,t(s)])]),I])}const w=l(f,[["render",N],["__file","contact-us.html.vue"]]);export{w as default};
|
||||
@@ -1 +1 @@
|
||||
import{_ as a,a as i,b as t,c,d as u,e as p}from"./qqgroup3_qr.a24fdd88.js";import{_ as d,o as l,c as h,a as s,b as r,e as o,d as e,r as _}from"./app.524ecf5c.js";const g="/images/dingding_group_search.png",m={},b=s("h1",{id:"contact-us",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#contact-us","aria-hidden":"true"},"#"),o(" Contact Us")],-1),f=s("h3",{id:"issues",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#issues","aria-hidden":"true"},"#"),o(" Issues")],-1),k=o("Questions about how to use Arthas and opinions can be directly raised in issues\uFF1A "),x={href:"https://github.com/alibaba/arthas/issues",target:"_blank",rel:"noopener noreferrer"},A=o("https://github.com/alibaba/arthas/issues"),Q=e('<h3 id="dingding-group" tabindex="-1"><a class="header-anchor" href="#dingding-group" aria-hidden="true">#</a> DingDing Group</h3><ul><li>Arthas open source discussion Group\uFF1A 21965291 \uFF0CYou can join by searching for group number\u3002</li></ul><p><img src="'+a+'" alt=""></p><ul><li>Arthas open source discussion Group 2\uFF1A 30707824 \uFF0CYou can join by searching for group number\u3002</li></ul><p><img src="'+i+'" alt=""></p><ul><li>Arthas open source discussion Group 3\uFF1A 17605006847 , You can join by searching for group number\u3002</li></ul><p><img src="'+t+'" alt=""></p><ul><li>Arthas open source discussion Group 4\uFF1A 41920010710 , You can join by searching for group number\u3002</li></ul><p><img src="'+c+'" alt=""></p><h3 id="instructions-for-installing-dingtalk" tabindex="-1"><a class="header-anchor" href="#instructions-for-installing-dingtalk" aria-hidden="true">#</a> Instructions for Installing DingTalk</h3>',10),w=o("DingTalk can be downloaded from: "),y={href:"https://page.dingtalk.com/wow/dingtalk/act/en-download",target:"_blank",rel:"noopener noreferrer"},G=o("https://www.dingtalk.com/en"),j=e('<p>After installing you can search for group number and join it.</p><p><img src="'+g+'" alt=""></p><h3 id="qq-group" tabindex="-1"><a class="header-anchor" href="#qq-group" aria-hidden="true">#</a> QQ Group</h3><p>Arthas open source discussion QQ group\uFF1A916328269</p><p><img src="'+u+'" alt=""></p><p>Arthas open source discussion QQ group2\uFF1A854625984</p><p>Arthas open source discussion QQ group 3\uFF1A 672077388</p><p><img src="'+p+'" alt=""></p>',8);function I(q,D){const n=_("ExternalLinkIcon");return l(),h("div",null,[b,f,s("p",null,[k,s("a",x,[A,r(n)])]),Q,s("p",null,[w,s("a",y,[G,r(n)])]),j])}const Y=d(m,[["render",I],["__file","contact-us.html.vue"]]);export{Y as default};
|
||||
import{_ as a,a as i,b as t,c,d as u,e as p}from"./qqgroup3_qr.a24fdd88.js";import{_ as d,o as l,c as h,a as s,b as r,e as o,d as e,r as _}from"./app.e2427bec.js";const g="/images/dingding_group_search.png",m={},b=s("h1",{id:"contact-us",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#contact-us","aria-hidden":"true"},"#"),o(" Contact Us")],-1),f=s("h3",{id:"issues",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#issues","aria-hidden":"true"},"#"),o(" Issues")],-1),k=o("Questions about how to use Arthas and opinions can be directly raised in issues\uFF1A "),x={href:"https://github.com/alibaba/arthas/issues",target:"_blank",rel:"noopener noreferrer"},A=o("https://github.com/alibaba/arthas/issues"),Q=e('<h3 id="dingding-group" tabindex="-1"><a class="header-anchor" href="#dingding-group" aria-hidden="true">#</a> DingDing Group</h3><ul><li>Arthas open source discussion Group\uFF1A 21965291 \uFF0CYou can join by searching for group number\u3002</li></ul><p><img src="'+a+'" alt=""></p><ul><li>Arthas open source discussion Group 2\uFF1A 30707824 \uFF0CYou can join by searching for group number\u3002</li></ul><p><img src="'+i+'" alt=""></p><ul><li>Arthas open source discussion Group 3\uFF1A 17605006847 , You can join by searching for group number\u3002</li></ul><p><img src="'+t+'" alt=""></p><ul><li>Arthas open source discussion Group 4\uFF1A 41920010710 , You can join by searching for group number\u3002</li></ul><p><img src="'+c+'" alt=""></p><h3 id="instructions-for-installing-dingtalk" tabindex="-1"><a class="header-anchor" href="#instructions-for-installing-dingtalk" aria-hidden="true">#</a> Instructions for Installing DingTalk</h3>',10),w=o("DingTalk can be downloaded from: "),y={href:"https://page.dingtalk.com/wow/dingtalk/act/en-download",target:"_blank",rel:"noopener noreferrer"},G=o("https://www.dingtalk.com/en"),j=e('<p>After installing you can search for group number and join it.</p><p><img src="'+g+'" alt=""></p><h3 id="qq-group" tabindex="-1"><a class="header-anchor" href="#qq-group" aria-hidden="true">#</a> QQ Group</h3><p>Arthas open source discussion QQ group\uFF1A916328269</p><p><img src="'+u+'" alt=""></p><p>Arthas open source discussion QQ group2\uFF1A854625984</p><p>Arthas open source discussion QQ group 3\uFF1A 672077388</p><p><img src="'+p+'" alt=""></p>',8);function I(q,D){const n=_("ExternalLinkIcon");return l(),h("div",null,[b,f,s("p",null,[k,s("a",x,[A,r(n)])]),Q,s("p",null,[w,s("a",y,[G,r(n)])]),j])}const Y=d(m,[["render",I],["__file","contact-us.html.vue"]]);export{Y as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-3992adde","path":"/doc/contact-us.html","title":"\u8054\u7CFB\u6211\u4EEC","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"\u62DB\u8058","slug":"\u62DB\u8058","link":"#\u62DB\u8058","children":[]},{"level":3,"title":"Issues","slug":"issues","link":"#issues","children":[]},{"level":3,"title":"\u5FAE\u4FE1\u516C\u4F17\u53F7","slug":"\u5FAE\u4FE1\u516C\u4F17\u53F7","link":"#\u5FAE\u4FE1\u516C\u4F17\u53F7","children":[]},{"level":3,"title":"\u9489\u9489\u7FA4","slug":"\u9489\u9489\u7FA4","link":"#\u9489\u9489\u7FA4","children":[]},{"level":3,"title":"QQ \u7FA4","slug":"qq-\u7FA4","link":"#qq-\u7FA4","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/contact-us.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-3992adde","path":"/doc/contact-us.html","title":"\u8054\u7CFB\u6211\u4EEC","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"\u62DB\u8058","slug":"\u62DB\u8058","link":"#\u62DB\u8058","children":[]},{"level":3,"title":"Issues","slug":"issues","link":"#issues","children":[]},{"level":3,"title":"\u5FAE\u4FE1\u516C\u4F17\u53F7","slug":"\u5FAE\u4FE1\u516C\u4F17\u53F7","link":"#\u5FAE\u4FE1\u516C\u4F17\u53F7","children":[]},{"level":3,"title":"\u9489\u9489\u7FA4","slug":"\u9489\u9489\u7FA4","link":"#\u9489\u9489\u7FA4","children":[]},{"level":3,"title":"QQ \u7FA4","slug":"qq-\u7FA4","link":"#qq-\u7FA4","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/contact-us.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const n=JSON.parse('{"key":"v-4be7594a","path":"/en/doc/contact-us.html","title":"Contact Us","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"Issues","slug":"issues","link":"#issues","children":[]},{"level":3,"title":"DingDing Group","slug":"dingding-group","link":"#dingding-group","children":[]},{"level":3,"title":"Instructions for Installing DingTalk","slug":"instructions-for-installing-dingtalk","link":"#instructions-for-installing-dingtalk","children":[]},{"level":3,"title":"QQ Group","slug":"qq-group","link":"#qq-group","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/contact-us.md","version":"4.3.3"}');export{n as data};
|
||||
const n=JSON.parse('{"key":"v-4be7594a","path":"/en/doc/contact-us.html","title":"Contact Us","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"Issues","slug":"issues","link":"#issues","children":[]},{"level":3,"title":"DingDing Group","slug":"dingding-group","link":"#dingding-group","children":[]},{"level":3,"title":"Instructions for Installing DingTalk","slug":"instructions-for-installing-dingtalk","link":"#instructions-for-installing-dingtalk","children":[]},{"level":3,"title":"QQ Group","slug":"qq-group","link":"#qq-group","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/contact-us.md","version":"4.3.5"}');export{n as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as n}from"./dashboard.eb1e1fee.js";import{_ as d,o as l,c as s,a as e,b as t,e as a,d as r,r as c}from"./app.524ecf5c.js";const o={},h=e("h1",{id:"dashboard",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dashboard","aria-hidden":"true"},"#"),a(" dashboard")],-1),m={href:"https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=command-dashboard",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"dashboard",-1),v=a("\u5728\u7EBF\u6559\u7A0B"),b=r(`<div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u5F53\u524D\u7CFB\u7EDF\u7684\u5B9E\u65F6\u6570\u636E\u9762\u677F\uFF0C\u6309 ctrl+c \u9000\u51FA\u3002</p></div><p>\u5F53\u8FD0\u884C\u5728 Ali-tomcat \u65F6\uFF0C\u4F1A\u663E\u793A\u5F53\u524D tomcat \u7684\u5B9E\u65F6\u4FE1\u606F\uFF0C\u5982 HTTP \u8BF7\u6C42\u7684 qps, rt, \u9519\u8BEF\u6570, \u7EBF\u7A0B\u6C60\u4FE1\u606F\u7B49\u7B49\u3002</p><h2 id="\u53C2\u6570\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#\u53C2\u6570\u8BF4\u660E" aria-hidden="true">#</a> \u53C2\u6570\u8BF4\u660E</h2><table><thead><tr><th style="text-align:right;">\u53C2\u6570\u540D\u79F0</th><th style="text-align:left;">\u53C2\u6570\u8BF4\u660E</th></tr></thead><tbody><tr><td style="text-align:right;">[i:]</td><td style="text-align:left;">\u5237\u65B0\u5B9E\u65F6\u6570\u636E\u7684\u65F6\u95F4\u95F4\u9694 (ms)\uFF0C\u9ED8\u8BA4 5000ms</td></tr><tr><td style="text-align:right;">[n:]</td><td style="text-align:left;">\u5237\u65B0\u5B9E\u65F6\u6570\u636E\u7684\u6B21\u6570</td></tr></tbody></table><h2 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h2><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ dashboard
|
||||
import{_ as e}from"./dashboard.eb1e1fee.js";import{_ as i,o as a,c as l,d}from"./app.e2427bec.js";const n={},s=d(`<h1 id="dashboard" tabindex="-1"><a class="header-anchor" href="#dashboard" aria-hidden="true">#</a> dashboard</h1><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u5F53\u524D\u7CFB\u7EDF\u7684\u5B9E\u65F6\u6570\u636E\u9762\u677F\uFF0C\u6309 ctrl+c \u9000\u51FA\u3002</p></div><p>\u5F53\u8FD0\u884C\u5728 Ali-tomcat \u65F6\uFF0C\u4F1A\u663E\u793A\u5F53\u524D tomcat \u7684\u5B9E\u65F6\u4FE1\u606F\uFF0C\u5982 HTTP \u8BF7\u6C42\u7684 qps, rt, \u9519\u8BEF\u6570, \u7EBF\u7A0B\u6C60\u4FE1\u606F\u7B49\u7B49\u3002</p><h2 id="\u53C2\u6570\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#\u53C2\u6570\u8BF4\u660E" aria-hidden="true">#</a> \u53C2\u6570\u8BF4\u660E</h2><table><thead><tr><th style="text-align:right;">\u53C2\u6570\u540D\u79F0</th><th style="text-align:left;">\u53C2\u6570\u8BF4\u660E</th></tr></thead><tbody><tr><td style="text-align:right;">[i:]</td><td style="text-align:left;">\u5237\u65B0\u5B9E\u65F6\u6570\u636E\u7684\u65F6\u95F4\u95F4\u9694 (ms)\uFF0C\u9ED8\u8BA4 5000ms</td></tr><tr><td style="text-align:right;">[n:]</td><td style="text-align:left;">\u5237\u65B0\u5B9E\u65F6\u6570\u636E\u7684\u6B21\u6570</td></tr></tbody></table><h2 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h2><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ dashboard
|
||||
ID NAME GROUP PRIORITY STATE %CPU DELTA_TIME TIME INTERRUPTE DAEMON
|
||||
-1 C2 CompilerThread0 - -1 - 1.55 0.077 0:8.684 false true
|
||||
53 Timer-for-arthas-dashboard-07b system 5 RUNNABLE 0.08 0.004 0:0.004 false true
|
||||
@@ -30,4 +30,4 @@ java.home /Library/Java/Jav
|
||||
systemload.average 10.68
|
||||
processors 8
|
||||
uptime 272s
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="\u6570\u636E\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#\u6570\u636E\u8BF4\u660E" aria-hidden="true">#</a> \u6570\u636E\u8BF4\u660E</h2><ul><li>ID: Java \u7EA7\u522B\u7684\u7EBF\u7A0B ID\uFF0C\u6CE8\u610F\u8FD9\u4E2A ID \u4E0D\u80FD\u8DDF jstack \u4E2D\u7684 nativeID \u4E00\u4E00\u5BF9\u5E94\u3002</li><li>NAME: \u7EBF\u7A0B\u540D</li><li>GROUP: \u7EBF\u7A0B\u7EC4\u540D</li><li>PRIORITY: \u7EBF\u7A0B\u4F18\u5148\u7EA7, 1~10 \u4E4B\u95F4\u7684\u6570\u5B57\uFF0C\u8D8A\u5927\u8868\u793A\u4F18\u5148\u7EA7\u8D8A\u9AD8</li><li>STATE: \u7EBF\u7A0B\u7684\u72B6\u6001</li><li>CPU%: \u7EBF\u7A0B\u7684 cpu \u4F7F\u7528\u7387\u3002\u6BD4\u5982\u91C7\u6837\u95F4\u9694 1000ms\uFF0C\u67D0\u4E2A\u7EBF\u7A0B\u7684\u589E\u91CF cpu \u65F6\u95F4\u4E3A 100ms\uFF0C\u5219 cpu \u4F7F\u7528\u7387=100/1000=10%</li><li>DELTA_TIME: \u4E0A\u6B21\u91C7\u6837\u4E4B\u540E\u7EBF\u7A0B\u8FD0\u884C\u589E\u91CF CPU \u65F6\u95F4\uFF0C\u6570\u636E\u683C\u5F0F\u4E3A<code>\u79D2</code></li><li>TIME: \u7EBF\u7A0B\u8FD0\u884C\u603B CPU \u65F6\u95F4\uFF0C\u6570\u636E\u683C\u5F0F\u4E3A<code>\u5206:\u79D2</code></li><li>INTERRUPTED: \u7EBF\u7A0B\u5F53\u524D\u7684\u4E2D\u65AD\u4F4D\u72B6\u6001</li><li>DAEMON: \u662F\u5426\u662F daemon \u7EBF\u7A0B</li></ul><h3 id="jvm-\u5185\u90E8\u7EBF\u7A0B" tabindex="-1"><a class="header-anchor" href="#jvm-\u5185\u90E8\u7EBF\u7A0B" aria-hidden="true">#</a> JVM \u5185\u90E8\u7EBF\u7A0B</h3><p>Java 8 \u4E4B\u540E\u652F\u6301\u83B7\u53D6 JVM \u5185\u90E8\u7EBF\u7A0B CPU \u65F6\u95F4\uFF0C\u8FD9\u4E9B\u7EBF\u7A0B\u53EA\u6709\u540D\u79F0\u548C CPU \u65F6\u95F4\uFF0C\u6CA1\u6709 ID \u53CA\u72B6\u6001\u7B49\u4FE1\u606F\uFF08\u663E\u793A ID \u4E3A-1\uFF09\u3002 \u901A\u8FC7\u5185\u90E8\u7EBF\u7A0B\u53EF\u4EE5\u89C2\u6D4B\u5230 JVM \u6D3B\u52A8\uFF0C\u5982 GC\u3001JIT \u7F16\u8BD1\u7B49\u5360\u7528 CPU \u60C5\u51B5\uFF0C\u65B9\u4FBF\u4E86\u89E3 JVM \u6574\u4F53\u8FD0\u884C\u72B6\u51B5\u3002</p><ul><li>\u5F53 JVM \u5806(heap)/\u5143\u6570\u636E(metaspace)\u7A7A\u95F4\u4E0D\u8DB3\u6216 OOM \u65F6\uFF0C\u53EF\u4EE5\u770B\u5230 GC \u7EBF\u7A0B\u7684 CPU \u5360\u7528\u7387\u660E\u663E\u9AD8\u4E8E\u5176\u4ED6\u7684\u7EBF\u7A0B\u3002</li><li>\u5F53\u6267\u884C<code>trace/watch/tt/redefine</code>\u7B49\u547D\u4EE4\u540E\uFF0C\u53EF\u4EE5\u770B\u5230 JIT \u7EBF\u7A0B\u6D3B\u52A8\u53D8\u5F97\u66F4\u9891\u7E41\u3002\u56E0\u4E3A JVM \u70ED\u66F4\u65B0 class \u5B57\u8282\u7801\u65F6\u6E05\u9664\u4E86\u6B64 class \u76F8\u5173\u7684 JIT \u7F16\u8BD1\u7ED3\u679C\uFF0C\u9700\u8981\u91CD\u65B0\u7F16\u8BD1\u3002</li></ul><p>JVM \u5185\u90E8\u7EBF\u7A0B\u5305\u62EC\u4E0B\u9762\u51E0\u79CD\uFF1A</p><ul><li>JIT \u7F16\u8BD1\u7EBF\u7A0B: \u5982 <code>C1 CompilerThread0</code>, <code>C2 CompilerThread0</code></li><li>GC \u7EBF\u7A0B: \u5982<code>GC Thread0</code>, <code>G1 Young RemSet Sampling</code></li><li>\u5176\u5B83\u5185\u90E8\u7EBF\u7A0B: \u5982<code>VM Periodic Task Thread</code>, <code>VM Thread</code>, <code>Service Thread</code></li></ul><h2 id="\u622A\u56FE\u5C55\u793A" tabindex="-1"><a class="header-anchor" href="#\u622A\u56FE\u5C55\u793A" aria-hidden="true">#</a> \u622A\u56FE\u5C55\u793A</h2><p><img src="`+n+'" alt="" title="dashboard"></p>',15);function p(_,T){const i=c("ExternalLinkIcon");return l(),s("div",null,[h,e("p",null,[e("a",m,[u,v,t(i)])]),b])}const g=d(o,[["render",p],["__file","dashboard.html.vue"]]);export{g as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="\u6570\u636E\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#\u6570\u636E\u8BF4\u660E" aria-hidden="true">#</a> \u6570\u636E\u8BF4\u660E</h2><ul><li>ID: Java \u7EA7\u522B\u7684\u7EBF\u7A0B ID\uFF0C\u6CE8\u610F\u8FD9\u4E2A ID \u4E0D\u80FD\u8DDF jstack \u4E2D\u7684 nativeID \u4E00\u4E00\u5BF9\u5E94\u3002</li><li>NAME: \u7EBF\u7A0B\u540D</li><li>GROUP: \u7EBF\u7A0B\u7EC4\u540D</li><li>PRIORITY: \u7EBF\u7A0B\u4F18\u5148\u7EA7, 1~10 \u4E4B\u95F4\u7684\u6570\u5B57\uFF0C\u8D8A\u5927\u8868\u793A\u4F18\u5148\u7EA7\u8D8A\u9AD8</li><li>STATE: \u7EBF\u7A0B\u7684\u72B6\u6001</li><li>CPU%: \u7EBF\u7A0B\u7684 cpu \u4F7F\u7528\u7387\u3002\u6BD4\u5982\u91C7\u6837\u95F4\u9694 1000ms\uFF0C\u67D0\u4E2A\u7EBF\u7A0B\u7684\u589E\u91CF cpu \u65F6\u95F4\u4E3A 100ms\uFF0C\u5219 cpu \u4F7F\u7528\u7387=100/1000=10%</li><li>DELTA_TIME: \u4E0A\u6B21\u91C7\u6837\u4E4B\u540E\u7EBF\u7A0B\u8FD0\u884C\u589E\u91CF CPU \u65F6\u95F4\uFF0C\u6570\u636E\u683C\u5F0F\u4E3A<code>\u79D2</code></li><li>TIME: \u7EBF\u7A0B\u8FD0\u884C\u603B CPU \u65F6\u95F4\uFF0C\u6570\u636E\u683C\u5F0F\u4E3A<code>\u5206:\u79D2</code></li><li>INTERRUPTED: \u7EBF\u7A0B\u5F53\u524D\u7684\u4E2D\u65AD\u4F4D\u72B6\u6001</li><li>DAEMON: \u662F\u5426\u662F daemon \u7EBF\u7A0B</li></ul><h3 id="jvm-\u5185\u90E8\u7EBF\u7A0B" tabindex="-1"><a class="header-anchor" href="#jvm-\u5185\u90E8\u7EBF\u7A0B" aria-hidden="true">#</a> JVM \u5185\u90E8\u7EBF\u7A0B</h3><p>Java 8 \u4E4B\u540E\u652F\u6301\u83B7\u53D6 JVM \u5185\u90E8\u7EBF\u7A0B CPU \u65F6\u95F4\uFF0C\u8FD9\u4E9B\u7EBF\u7A0B\u53EA\u6709\u540D\u79F0\u548C CPU \u65F6\u95F4\uFF0C\u6CA1\u6709 ID \u53CA\u72B6\u6001\u7B49\u4FE1\u606F\uFF08\u663E\u793A ID \u4E3A-1\uFF09\u3002 \u901A\u8FC7\u5185\u90E8\u7EBF\u7A0B\u53EF\u4EE5\u89C2\u6D4B\u5230 JVM \u6D3B\u52A8\uFF0C\u5982 GC\u3001JIT \u7F16\u8BD1\u7B49\u5360\u7528 CPU \u60C5\u51B5\uFF0C\u65B9\u4FBF\u4E86\u89E3 JVM \u6574\u4F53\u8FD0\u884C\u72B6\u51B5\u3002</p><ul><li>\u5F53 JVM \u5806(heap)/\u5143\u6570\u636E(metaspace)\u7A7A\u95F4\u4E0D\u8DB3\u6216 OOM \u65F6\uFF0C\u53EF\u4EE5\u770B\u5230 GC \u7EBF\u7A0B\u7684 CPU \u5360\u7528\u7387\u660E\u663E\u9AD8\u4E8E\u5176\u4ED6\u7684\u7EBF\u7A0B\u3002</li><li>\u5F53\u6267\u884C<code>trace/watch/tt/redefine</code>\u7B49\u547D\u4EE4\u540E\uFF0C\u53EF\u4EE5\u770B\u5230 JIT \u7EBF\u7A0B\u6D3B\u52A8\u53D8\u5F97\u66F4\u9891\u7E41\u3002\u56E0\u4E3A JVM \u70ED\u66F4\u65B0 class \u5B57\u8282\u7801\u65F6\u6E05\u9664\u4E86\u6B64 class \u76F8\u5173\u7684 JIT \u7F16\u8BD1\u7ED3\u679C\uFF0C\u9700\u8981\u91CD\u65B0\u7F16\u8BD1\u3002</li></ul><p>JVM \u5185\u90E8\u7EBF\u7A0B\u5305\u62EC\u4E0B\u9762\u51E0\u79CD\uFF1A</p><ul><li>JIT \u7F16\u8BD1\u7EBF\u7A0B: \u5982 <code>C1 CompilerThread0</code>, <code>C2 CompilerThread0</code></li><li>GC \u7EBF\u7A0B: \u5982<code>GC Thread0</code>, <code>G1 Young RemSet Sampling</code></li><li>\u5176\u5B83\u5185\u90E8\u7EBF\u7A0B: \u5982<code>VM Periodic Task Thread</code>, <code>VM Thread</code>, <code>Service Thread</code></li></ul><h2 id="\u622A\u56FE\u5C55\u793A" tabindex="-1"><a class="header-anchor" href="#\u622A\u56FE\u5C55\u793A" aria-hidden="true">#</a> \u622A\u56FE\u5C55\u793A</h2><p><img src="`+e+'" alt="" title="dashboard"></p>',16),t=[s];function r(c,o){return a(),l("div",null,t)}const h=i(n,[["render",r],["__file","dashboard.html.vue"]]);export{h as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-79107649","path":"/en/doc/dashboard.html","title":"dashboard","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]},{"level":2,"title":"Notes on column headers","slug":"notes-on-column-headers","link":"#notes-on-column-headers","children":[{"level":3,"title":"JVM internal threads","slug":"jvm-internal-threads","link":"#jvm-internal-threads","children":[]}]},{"level":2,"title":"Screenshot","slug":"screenshot","link":"#screenshot","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/dashboard.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-79107649","path":"/en/doc/dashboard.html","title":"dashboard","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]},{"level":2,"title":"Notes on column headers","slug":"notes-on-column-headers","link":"#notes-on-column-headers","children":[{"level":3,"title":"JVM internal threads","slug":"jvm-internal-threads","link":"#jvm-internal-threads","children":[]}]},{"level":2,"title":"Screenshot","slug":"screenshot","link":"#screenshot","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/dashboard.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as n}from"./dashboard.eb1e1fee.js";import{_ as s,o as r,c as d,a as e,b as i,e as a,d as l,r as o}from"./app.524ecf5c.js";const c={},h=e("h1",{id:"dashboard",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dashboard","aria-hidden":"true"},"#"),a(" dashboard")],-1),u={href:"https://arthas.aliyun.com/doc/arthas-tutorials.html?language=en&id=command-dashboard",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"dashboard",-1),v=a(" online tutorial"),p=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,[a("This is the real time statistics dashboard for the current system, press "),e("code",null,"Ctrl+C"),a(" to exit.")])],-1),b=a("When running in Apache Tomcat Alibaba edition, the dashboard will also present the real time statistics of the tomcat, including "),f={href:"https://en.wikipedia.org/wiki/Queries_per_second",target:"_blank",rel:"noopener noreferrer"},g=a("QPS"),_=a(", RT, error counts, and thread pool, etc."),T=l(`<h2 id="options" tabindex="-1"><a class="header-anchor" href="#options" aria-hidden="true">#</a> Options</h2><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;">[i:]</td><td style="text-align:left;">The interval (in ms) between two executions, default is 5000 ms.</td></tr><tr><td style="text-align:right;">[n:]</td><td style="text-align:left;">The number of times this command will be executed.</td></tr></tbody></table><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ dashboard
|
||||
import{_ as i}from"./dashboard.eb1e1fee.js";import{_ as n,o as s,c as r,a as e,b as d,e as a,d as l,r as o}from"./app.e2427bec.js";const c={},h=e("h1",{id:"dashboard",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dashboard","aria-hidden":"true"},"#"),a(" dashboard")],-1),m=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,[a("This is the real time statistics dashboard for the current system, press "),e("code",null,"Ctrl+C"),a(" to exit.")])],-1),u=a("When running in Apache Tomcat Alibaba edition, the dashboard will also present the real time statistics of the tomcat, including "),v={href:"https://en.wikipedia.org/wiki/Queries_per_second",target:"_blank",rel:"noopener noreferrer"},p=a("QPS"),b=a(", RT, error counts, and thread pool, etc."),f=l(`<h2 id="options" tabindex="-1"><a class="header-anchor" href="#options" aria-hidden="true">#</a> Options</h2><table><thead><tr><th style="text-align:right;">Name</th><th style="text-align:left;">Specification</th></tr></thead><tbody><tr><td style="text-align:right;">[i:]</td><td style="text-align:left;">The interval (in ms) between two executions, default is 5000 ms.</td></tr><tr><td style="text-align:right;">[n:]</td><td style="text-align:left;">The number of times this command will be executed.</td></tr></tbody></table><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ dashboard
|
||||
ID NAME GROUP PRIORITY STATE %CPU DELTA_TIME TIME INTERRUPTE DAEMON
|
||||
-1 C2 CompilerThread0 - -1 - 1.55 0.077 0:8.684 false true
|
||||
53 Timer-for-arthas-dashboard-07b system 5 RUNNABLE 0.08 0.004 0:0.004 false true
|
||||
@@ -30,4 +30,4 @@ java.home /Library/Java/Jav
|
||||
systemload.average 10.68
|
||||
processors 8
|
||||
uptime 272s
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="notes-on-column-headers" tabindex="-1"><a class="header-anchor" href="#notes-on-column-headers" aria-hidden="true">#</a> Notes on column headers</h2><ul><li>ID: JVM thread ID, pls. note this ID is different from the nativeID in jstack</li><li>NAME: thread name</li><li>GROUP: thread group name</li><li>PRIORITY: thread priority, ranged from 1 to 10. The greater number, the higher priority</li><li>STATE: thread state</li><li>CPU%: the ratio of CPU usage for the thread. For example, the sampling interval is 1000ms, and the incremental cpu time of a thread is 100ms, then the cpu usage rate=100/1000=10%</li><li>DELTA_TIME: incremental CPU time of thread running after the last sampling in <code>second</code> format</li><li>TIME: total CPU time of the thread in <code>minute:second</code> format</li><li>INTERRUPTED: the thread interruption state</li><li>DAEMON: daemon thread or not</li></ul><h3 id="jvm-internal-threads" tabindex="-1"><a class="header-anchor" href="#jvm-internal-threads" aria-hidden="true">#</a> JVM internal threads</h3><p>After Java 8, it is supported to obtain the CPU time of JVM internal threads. These threads only have the name and CPU time, without ID and status information (display ID is -1).</p><p>JVM activities can be observed through internal threads, such as GC, JIT compilation, etc., to perceive the overall status of JVM.</p><ul><li>When the JVM heap/metaspace space is insufficient or OOM, it can be seen that the CPU usage of the GC threads is significantly higher than other threads.</li><li>After executing commands such as <code>trace/watch/tt/redefine</code>, you can see that JIT threads activities become more frequent. Because the JIT compilation data related to this class is cleared when the JVM hot update the class bytecode, it needs to be recompiled.</li></ul><p>JVM internal threads include the following:</p><ul><li>JIT compilation thread: such as <code>C1 CompilerThread0</code>, <code>C2 CompilerThread0</code></li><li>GC thread: such as <code>GC Thread0</code>, <code>G1 Young RemSet Sampling</code></li><li>Other internal threads: such as<code>VM Periodic Task Thread</code>, <code>VM Thread</code>, <code>Service Thread</code></li></ul><h2 id="screenshot" tabindex="-1"><a class="header-anchor" href="#screenshot" aria-hidden="true">#</a> Screenshot</h2><p><img src="`+n+'" alt="" title="dashboard"></p>',14);function M(I,C){const t=o("ExternalLinkIcon");return r(),d("div",null,[h,e("p",null,[e("a",u,[m,v,i(t)])]),p,e("p",null,[b,e("a",f,[g,i(t)]),_]),T])}const E=s(c,[["render",M],["__file","dashboard.html.vue"]]);export{E as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="notes-on-column-headers" tabindex="-1"><a class="header-anchor" href="#notes-on-column-headers" aria-hidden="true">#</a> Notes on column headers</h2><ul><li>ID: JVM thread ID, pls. note this ID is different from the nativeID in jstack</li><li>NAME: thread name</li><li>GROUP: thread group name</li><li>PRIORITY: thread priority, ranged from 1 to 10. The greater number, the higher priority</li><li>STATE: thread state</li><li>CPU%: the ratio of CPU usage for the thread. For example, the sampling interval is 1000ms, and the incremental cpu time of a thread is 100ms, then the cpu usage rate=100/1000=10%</li><li>DELTA_TIME: incremental CPU time of thread running after the last sampling in <code>second</code> format</li><li>TIME: total CPU time of the thread in <code>minute:second</code> format</li><li>INTERRUPTED: the thread interruption state</li><li>DAEMON: daemon thread or not</li></ul><h3 id="jvm-internal-threads" tabindex="-1"><a class="header-anchor" href="#jvm-internal-threads" aria-hidden="true">#</a> JVM internal threads</h3><p>After Java 8, it is supported to obtain the CPU time of JVM internal threads. These threads only have the name and CPU time, without ID and status information (display ID is -1).</p><p>JVM activities can be observed through internal threads, such as GC, JIT compilation, etc., to perceive the overall status of JVM.</p><ul><li>When the JVM heap/metaspace space is insufficient or OOM, it can be seen that the CPU usage of the GC threads is significantly higher than other threads.</li><li>After executing commands such as <code>trace/watch/tt/redefine</code>, you can see that JIT threads activities become more frequent. Because the JIT compilation data related to this class is cleared when the JVM hot update the class bytecode, it needs to be recompiled.</li></ul><p>JVM internal threads include the following:</p><ul><li>JIT compilation thread: such as <code>C1 CompilerThread0</code>, <code>C2 CompilerThread0</code></li><li>GC thread: such as <code>GC Thread0</code>, <code>G1 Young RemSet Sampling</code></li><li>Other internal threads: such as<code>VM Periodic Task Thread</code>, <code>VM Thread</code>, <code>Service Thread</code></li></ul><h2 id="screenshot" tabindex="-1"><a class="header-anchor" href="#screenshot" aria-hidden="true">#</a> Screenshot</h2><p><img src="`+i+'" alt="" title="dashboard"></p>',14);function g(_,T){const t=o("ExternalLinkIcon");return s(),r("div",null,[h,m,e("p",null,[u,e("a",v,[p,d(t)]),b]),f])}const C=n(c,[["render",g],["__file","dashboard.html.vue"]]);export{C as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-0d1e3f35","path":"/doc/dashboard.html","title":"dashboard","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]},{"level":2,"title":"\u6570\u636E\u8BF4\u660E","slug":"\u6570\u636E\u8BF4\u660E","link":"#\u6570\u636E\u8BF4\u660E","children":[{"level":3,"title":"JVM \u5185\u90E8\u7EBF\u7A0B","slug":"jvm-\u5185\u90E8\u7EBF\u7A0B","link":"#jvm-\u5185\u90E8\u7EBF\u7A0B","children":[]}]},{"level":2,"title":"\u622A\u56FE\u5C55\u793A","slug":"\u622A\u56FE\u5C55\u793A","link":"#\u622A\u56FE\u5C55\u793A","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/dashboard.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-0d1e3f35","path":"/doc/dashboard.html","title":"dashboard","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]},{"level":2,"title":"\u6570\u636E\u8BF4\u660E","slug":"\u6570\u636E\u8BF4\u660E","link":"#\u6570\u636E\u8BF4\u660E","children":[{"level":3,"title":"JVM \u5185\u90E8\u7EBF\u7A0B","slug":"jvm-\u5185\u90E8\u7EBF\u7A0B","link":"#jvm-\u5185\u90E8\u7EBF\u7A0B","children":[]}]},{"level":2,"title":"\u622A\u56FE\u5C55\u793A","slug":"\u622A\u56FE\u5C55\u793A","link":"#\u622A\u56FE\u5C55\u793A","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/dashboard.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,50 +0,0 @@
|
||||
import{_ as n,o as e,c as t,a,b as i,d as o,e as p,r as l}from"./app.524ecf5c.js";const r={},c=o(`<h1 id="docker" tabindex="-1"><a class="header-anchor" href="#docker" aria-hidden="true">#</a> Docker</h1><h2 id="use-jdk-in-docker" tabindex="-1"><a class="header-anchor" href="#use-jdk-in-docker" aria-hidden="true">#</a> Use JDK in Docker</h2><p>Many times, the problem that arthas can't work with the application in docker is because the docker does not install JDK, but installs JRE. If only JRE is installed, many JAVA command line tools and class libraries will be missing, and Arthas will not work properly. Here are two common ways to use JDK in Docker.</p><h3 id="use-public-jdk-image" tabindex="-1"><a class="header-anchor" href="#use-public-jdk-image" aria-hidden="true">#</a> Use public JDK image</h3><ul><li>https://hub.docker.com/_/openjdk/</li></ul><p>such as:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>or:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk-alpine
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="install-via-package-management-software" tabindex="-1"><a class="header-anchor" href="#install-via-package-management-software" aria-hidden="true">#</a> Install via package management software</h3><p>such as:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token comment"># Install OpenJDK-8</span>
|
||||
RUN <span class="token function">apt-get</span> update <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> openjdk-8-jdk <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> ant <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> clean<span class="token punctuation">;</span>
|
||||
|
||||
<span class="token comment"># Fix certificate issues</span>
|
||||
RUN <span class="token function">apt-get</span> update <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> ca-certificates-java <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> clean <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
update-ca-certificates -f<span class="token punctuation">;</span>
|
||||
|
||||
<span class="token comment"># Setup JAVA_HOME - useful for docker commandline</span>
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
|
||||
RUN <span class="token builtin class-name">export</span> JAVA_HOME
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>or:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>RUN yum <span class="token function">install</span> <span class="token parameter variable">-y</span> <span class="token punctuation">\\</span>
|
||||
java-1.8.0-openjdk <span class="token punctuation">\\</span>
|
||||
java-1.8.0-openjdk-devel
|
||||
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/
|
||||
RUN <span class="token builtin class-name">export</span> JAVA_HOME
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="quick-start-with-docker" tabindex="-1"><a class="header-anchor" href="#quick-start-with-docker" aria-hidden="true">#</a> Quick start with Docker</h2><ol><li><p>Delete the existing <code>math-game</code> docker container (not necessary)</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> stop math-game <span class="token operator">||</span> <span class="token boolean">true</span> <span class="token operator">&&</span> <span class="token function">docker</span> <span class="token function">rm</span> math-game <span class="token operator">||</span> <span class="token boolean">true</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>Start <code>math-game</code></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">--name</span> math-game <span class="token parameter variable">-it</span> hengyunabc/arthas:latest /bin/sh <span class="token parameter variable">-c</span> <span class="token string">"java -jar /opt/arthas/math-game.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>Start <code>arthas-boot</code> for diagnosis</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> math-game /bin/sh <span class="token parameter variable">-c</span> <span class="token string">"java -jar /opt/arthas/arthas-boot.jar"</span>
|
||||
* <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span>: <span class="token number">9</span> jar
|
||||
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> arthas home: /opt/arthas
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Try to attach process <span class="token number">9</span>
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Attach process <span class="token number">9</span> success.
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> arthas-client connect <span class="token number">127.0</span>.0.1 <span class="token number">3658</span>
|
||||
,---. ,------. ,--------.,--. ,--. ,---. ,---.
|
||||
/ O <span class="token punctuation">\\</span> <span class="token operator">|</span> .--. <span class="token string">''</span>--. .--<span class="token string">'| '</span>--<span class="token string">' | / O \\ '</span> .-<span class="token string">'
|
||||
| .-. || '</span>--<span class="token string">'.'</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> .--. <span class="token operator">||</span> .-. <span class="token operator">|</span><span class="token variable"><span class="token variable">\`</span><span class="token builtin class-name">.</span> <span class="token variable">\`</span></span>-.
|
||||
<span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span><span class="token punctuation">\\</span> <span class="token punctuation">\\</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span>.-<span class="token string">' |
|
||||
\`--'</span> <span class="token variable"><span class="token variable">\`</span>--'<span class="token variable">\`</span></span>--<span class="token string">' '</span>--<span class="token string">' \`--'</span> <span class="token variable"><span class="token variable">\`</span>--' <span class="token variable">\`</span></span>--<span class="token string">'\`--'</span> <span class="token variable"><span class="token variable">\`</span>--'<span class="token variable">\`</span></span>-----'
|
||||
|
||||
|
||||
wiki: https://arthas.aliyun.com/doc
|
||||
version: <span class="token number">3.0</span>.5
|
||||
pid: <span class="token number">9</span>
|
||||
time: <span class="token number">2018</span>-12-18 <span class="token number">11</span>:30:36
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ol><h2 id="diagnose-the-java-process-in-docker" tabindex="-1"><a class="header-anchor" href="#diagnose-the-java-process-in-docker" aria-hidden="true">#</a> Diagnose the Java process in Docker</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">docker</span> <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> <span class="token variable">\${containerId}</span> /bin/bash <span class="token parameter variable">-c</span> <span class="token string">"wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="diagnose-the-java-process-in-the-container-in-k8s" tabindex="-1"><a class="header-anchor" href="#diagnose-the-java-process-in-the-container-in-k8s" aria-hidden="true">#</a> Diagnose the Java process in the container in k8s</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>kubectl <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> <span class="token variable">\${pod}</span> <span class="token parameter variable">--container</span> <span class="token variable">\${containerId}</span> -- /bin/bash <span class="token parameter variable">-c</span> <span class="token string">"wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="install-arthas-into-the-base-docker-image" tabindex="-1"><a class="header-anchor" href="#install-arthas-into-the-base-docker-image" aria-hidden="true">#</a> Install Arthas into the base Docker image</h2><p>It's easy to install Arthas into your Docker image.</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk-alpine
|
||||
|
||||
# copy arthas
|
||||
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>If you want to specify a version, you can view all the tags:</p>`,24),d={href:"https://hub.docker.com/r/hengyunabc/arthas/tags",target:"_blank",rel:"noopener noreferrer"},u=p("https://hub.docker.com/r/hengyunabc/arthas/tags");function k(v,m){const s=l("ExternalLinkIcon");return e(),t("div",null,[c,a("p",null,[a("a",d,[u,i(s)])])])}const h=n(r,[["render",k],["__file","docker.html.vue"]]);export{h as default};
|
||||
@@ -0,0 +1,107 @@
|
||||
import{_ as o,o as i,c,a as s,b as n,d as t,e as a,r}from"./app.e2427bec.js";const p={},l=t(`<h1 id="docker" tabindex="-1"><a class="header-anchor" href="#docker" aria-hidden="true">#</a> Docker</h1><h2 id="use-jdk-in-docker" tabindex="-1"><a class="header-anchor" href="#use-jdk-in-docker" aria-hidden="true">#</a> Use JDK in Docker</h2><p>Many times, the problem that arthas can't work with the application in docker is because the docker does not install JDK, but installs JRE. If only JRE is installed, many JAVA command line tools and class libraries will be missing, and Arthas will not work properly. Here are two common ways to use JDK in Docker.</p><h3 id="use-public-jdk-image" tabindex="-1"><a class="header-anchor" href="#use-public-jdk-image" aria-hidden="true">#</a> Use public JDK image</h3><ul><li>https://hub.docker.com/_/openjdk/</li></ul><p>such as:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>or:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk-alpine
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="install-via-package-management-software" tabindex="-1"><a class="header-anchor" href="#install-via-package-management-software" aria-hidden="true">#</a> Install via package management software</h3><p>such as:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token comment"># Install OpenJDK-8</span>
|
||||
RUN <span class="token function">apt-get</span> update <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> openjdk-8-jdk <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> ant <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> clean<span class="token punctuation">;</span>
|
||||
|
||||
<span class="token comment"># Fix certificate issues</span>
|
||||
RUN <span class="token function">apt-get</span> update <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> ca-certificates-java <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> clean <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
update-ca-certificates -f<span class="token punctuation">;</span>
|
||||
|
||||
<span class="token comment"># Setup JAVA_HOME - useful for docker commandline</span>
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
|
||||
RUN <span class="token builtin class-name">export</span> JAVA_HOME
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>or:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>RUN yum <span class="token function">install</span> <span class="token parameter variable">-y</span> <span class="token punctuation">\\</span>
|
||||
java-1.8.0-openjdk <span class="token punctuation">\\</span>
|
||||
java-1.8.0-openjdk-devel
|
||||
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/
|
||||
RUN <span class="token builtin class-name">export</span> JAVA_HOME
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="quick-start-with-docker" tabindex="-1"><a class="header-anchor" href="#quick-start-with-docker" aria-hidden="true">#</a> Quick start with Docker</h2><ol><li><p>Delete the existing <code>math-game</code> docker container (not necessary)</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> stop math-game <span class="token operator">||</span> <span class="token boolean">true</span> <span class="token operator">&&</span> <span class="token function">docker</span> <span class="token function">rm</span> math-game <span class="token operator">||</span> <span class="token boolean">true</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>Start <code>math-game</code></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">--name</span> math-game <span class="token parameter variable">-it</span> hengyunabc/arthas:latest /bin/sh <span class="token parameter variable">-c</span> <span class="token string">"java -jar /opt/arthas/math-game.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>Start <code>arthas-boot</code> for diagnosis</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> math-game /bin/sh <span class="token parameter variable">-c</span> <span class="token string">"java -jar /opt/arthas/arthas-boot.jar"</span>
|
||||
* <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span>: <span class="token number">9</span> jar
|
||||
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> arthas home: /opt/arthas
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Try to attach process <span class="token number">9</span>
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Attach process <span class="token number">9</span> success.
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> arthas-client connect <span class="token number">127.0</span>.0.1 <span class="token number">3658</span>
|
||||
,---. ,------. ,--------.,--. ,--. ,---. ,---.
|
||||
/ O <span class="token punctuation">\\</span> <span class="token operator">|</span> .--. <span class="token string">''</span>--. .--<span class="token string">'| '</span>--<span class="token string">' | / O \\ '</span> .-<span class="token string">'
|
||||
| .-. || '</span>--<span class="token string">'.'</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> .--. <span class="token operator">||</span> .-. <span class="token operator">|</span><span class="token variable"><span class="token variable">\`</span><span class="token builtin class-name">.</span> <span class="token variable">\`</span></span>-.
|
||||
<span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span><span class="token punctuation">\\</span> <span class="token punctuation">\\</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span>.-<span class="token string">' |
|
||||
\`--'</span> <span class="token variable"><span class="token variable">\`</span>--'<span class="token variable">\`</span></span>--<span class="token string">' '</span>--<span class="token string">' \`--'</span> <span class="token variable"><span class="token variable">\`</span>--' <span class="token variable">\`</span></span>--<span class="token string">'\`--'</span> <span class="token variable"><span class="token variable">\`</span>--'<span class="token variable">\`</span></span>-----'
|
||||
|
||||
|
||||
wiki: https://arthas.aliyun.com/doc
|
||||
version: <span class="token number">3.0</span>.5
|
||||
pid: <span class="token number">9</span>
|
||||
time: <span class="token number">2018</span>-12-18 <span class="token number">11</span>:30:36
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ol><h2 id="diagnose-the-java-process-in-docker" tabindex="-1"><a class="header-anchor" href="#diagnose-the-java-process-in-docker" aria-hidden="true">#</a> Diagnose the Java process in Docker</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">docker</span> <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> <span class="token variable">\${containerId}</span> /bin/bash <span class="token parameter variable">-c</span> <span class="token string">"wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="diagnose-a-java-process-in-kubernetes" tabindex="-1"><a class="header-anchor" href="#diagnose-a-java-process-in-kubernetes" aria-hidden="true">#</a> Diagnose a Java process in Kubernetes</h2><p>If the application container already includes a shell, a full JDK, and a download tool, start Arthas directly inside the application container.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>kubectl <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> <span class="token variable">\${pod}</span> <span class="token parameter variable">--container</span> <span class="token variable">\${containerName}</span> -- /bin/bash <span class="token parameter variable">-c</span> <span class="token string">"wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="attach-from-an-ephemeral-debug-container" tabindex="-1"><a class="header-anchor" href="#attach-from-an-ephemeral-debug-container" aria-hidden="true">#</a> Attach from an ephemeral debug container</h3>`,22),d=a("Starting with "),u={href:"https://github.com/alibaba/arthas/commit/21cf2e9ba52b305290be7223b980ff504bb9cb5b",target:"_blank",rel:"noopener noreferrer"},h=a("4.3.4"),m=a(", Arthas can attach to a JVM in an application container from an ephemeral container created by "),k=s("code",null,"kubectl debug",-1),v=a(". This is useful when the application uses a distroless image or does not include a shell or JDK."),b=t(`<p>Make sure the following requirements are met.</p><ul><li>The Pod runs on Linux.</li><li>The Kubernetes cluster supports ephemeral containers, and the container runtime supports <code>kubectl debug --target</code>. The target JVM's PID must be visible from the debug container.</li><li>The debug container provides a full JDK and uses Arthas 4.3.4 or later.</li><li>If the debug container and target JVM use different UIDs, the debug container must run as root and be able to access <code>/proc/<pid>/root</code> for the target process. The target HotSpot must also accept an attach client with UID <code>0</code>. Some older JDKs accept only the same UID/GID; those versions require matching IDs in both containers.</li></ul><div class="custom-container warning"><p class="custom-container-title">WARNING</p><p>The <code>--profile=sysadmin</code> option below creates a privileged ephemeral container. Use it only when authorized and permitted by the cluster security policy. If the application Pod enforces a non-root user, ask the cluster administrator for a debug configuration with the required permissions.</p></div><p>Add an ephemeral container to the running Pod. <code>\${containerName}</code> is the name of the target application container.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>kubectl debug <span class="token parameter variable">-it</span> <span class="token variable">\${pod}</span> <span class="token punctuation">\\</span>
|
||||
<span class="token parameter variable">--target</span><span class="token operator">=</span><span class="token variable">\${containerName}</span> <span class="token punctuation">\\</span>
|
||||
<span class="token parameter variable">--image</span><span class="token operator">=</span>amazoncorretto:8-alpine-jdk <span class="token punctuation">\\</span>
|
||||
<span class="token parameter variable">--profile</span><span class="token operator">=</span>sysadmin <span class="token punctuation">\\</span>
|
||||
-- <span class="token function">sh</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,5),g=a("The "),f=s("code",null,"--target",-1),_=a(" option places the ephemeral container in the target container's PID namespace. See "),y={href:"https://kubernetes.io/docs/tasks/debug/debug-application/debug-running-pod/",target:"_blank",rel:"noopener noreferrer"},A=a("Debug Running Pods"),I=a(" for configuration details that vary between Kubernetes versions."),x=t(`<p>Inside the debug container, download and extract the complete Arthas 4.3.4 distribution.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token assign-left variable">ARTHAS_VERSION</span><span class="token operator">=</span><span class="token number">4.3</span>.4
|
||||
<span class="token assign-left variable">ARTHAS_HOME</span><span class="token operator">=</span>/tmp/arthas-<span class="token variable">\${ARTHAS_VERSION}</span>
|
||||
|
||||
<span class="token function">wget</span> <span class="token parameter variable">-qO</span> /tmp/arthas.zip <span class="token punctuation">\\</span>
|
||||
<span class="token string">"https://repo1.maven.org/maven2/com/taobao/arthas/arthas-packaging/<span class="token variable">\${ARTHAS_VERSION}</span>/arthas-packaging-<span class="token variable">\${ARTHAS_VERSION}</span>-bin.zip"</span>
|
||||
<span class="token function">mkdir</span> <span class="token parameter variable">-p</span> <span class="token string">"<span class="token variable">\${ARTHAS_HOME}</span>"</span>
|
||||
<span class="token function">unzip</span> <span class="token parameter variable">-q</span> /tmp/arthas.zip <span class="token parameter variable">-d</span> <span class="token string">"<span class="token variable">\${ARTHAS_HOME}</span>"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Use <code>ps</code> to find the target JVM's PID. The following example uses PID <code>1</code>.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">ps</span> <span class="token parameter variable">-ef</span>
|
||||
|
||||
<span class="token assign-left variable">TARGET_PID</span><span class="token operator">=</span><span class="token number">1</span>
|
||||
<span class="token function">java</span> <span class="token parameter variable">-jar</span> <span class="token string">"<span class="token variable">\${ARTHAS_HOME}</span>/arthas-boot.jar"</span> <span class="token string">"<span class="token variable">\${TARGET_PID}</span>"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Arthas automatically compares the mount namespaces of the debug container and the target JVM. When they differ, Arthas exposes the target JVM's attach socket and copies the complete Arthas Home into a temporary directory in the target container. No shared volume is required between the two containers.</p><p>After a successful cross-mount-namespace attach, the target JVM's <code>arthas.log</code> contains the following structured event.</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>event=arthas_attach status=success mode=cross-mount-namespace targetPid=... arthasHome=... network=... telnet=... http=...
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Run <code>stop</code> to stop Arthas and remove the temporary Arthas Home copied into the target container. The <code>quit</code> and <code>exit</code> commands only disconnect the current session; they do not stop Arthas or remove that directory.</p><p>If <code>ps</code> in the debug container does not show the target JVM, the container runtime did not share the target process namespace as requested by <code>--target</code>, so this attach method cannot work. If the post-attach server health check fails, the terminal directs you to the target JVM's <code>arthas.log</code>. You can locate the log from the debug container.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">find</span> /proc/<span class="token variable">\${TARGET_PID}</span>/root <span class="token parameter variable">-name</span> arthas.log <span class="token operator"><span class="token file-descriptor important">2</span>></span>/dev/null
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="attach-from-a-sidecar-container" tabindex="-1"><a class="header-anchor" href="#attach-from-a-sidecar-container" aria-hidden="true">#</a> Attach from a sidecar container</h3>`,11),D=a("You can also preinstall a full JDK and Arthas in a long-running sidecar, then attach from the sidecar to an application JVM in the same Pod. Set "),w={href:"https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/",target:"_blank",rel:"noopener noreferrer"},j=s("code",null,"shareProcessNamespace: true",-1),R=a(" when the Pod is created. Otherwise, the sidecar cannot see the application container's PID. This setting shares only the PID namespace. The containers still have separate mount namespaces, and Arthas 4.3.4 accesses the target filesystem through "),T=s("code",null,"/proc/<pid>/root",-1),P=a(", so no shared volume is required. Containers in a Pod already share a network namespace, so "),J=s("code",null,"NET_ADMIN",-1),S=a(" is not required either."),q=t(`<p>Prefer running the sidecar and application JVM with the same Linux UID and GID. With a normally attachable JVM, the default <code>/proc</code> security policy, and a writable temporary directory, this path does not require any additional Linux capabilities.</p><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code><span class="token key atrule">spec</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">shareProcessNamespace</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>
|
||||
<span class="token key atrule">containers</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> app
|
||||
<span class="token key atrule">securityContext</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">runAsUser</span><span class="token punctuation">:</span> <span class="token number">1000</span>
|
||||
<span class="token key atrule">runAsGroup</span><span class="token punctuation">:</span> <span class="token number">1000</span>
|
||||
<span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> arthas<span class="token punctuation">-</span>sidecar
|
||||
<span class="token key atrule">image</span><span class="token punctuation">:</span> your<span class="token punctuation">-</span>registry/arthas<span class="token punctuation">-</span>sidecar<span class="token punctuation">:</span>4.3.4
|
||||
<span class="token key atrule">securityContext</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">runAsUser</span><span class="token punctuation">:</span> <span class="token number">1000</span>
|
||||
<span class="token key atrule">runAsGroup</span><span class="token punctuation">:</span> <span class="token number">1000</span>
|
||||
<span class="token key atrule">runAsNonRoot</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>
|
||||
<span class="token key atrule">allowPrivilegeEscalation</span><span class="token punctuation">:</span> <span class="token boolean important">false</span>
|
||||
<span class="token key atrule">capabilities</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">drop</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">"ALL"</span><span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,2),E=a("If the sidecar and application JVM use different UIDs, the sidecar must run as UID "),N=s("code",null,"0",-1),V=a(", and the target HotSpot must accept a root client. The current "),M={href:"https://github.com/openjdk/jdk/blob/master/src/hotspot/os/posix/attachListener_posix.cpp#L253-L269",target:"_blank",rel:"noopener noreferrer"},O=a("OpenJDK attach listener"),U=a(" accepts either the same UID/GID or UID "),H=s("code",null,"0",-1),L=a(". The upstream "),K={href:"https://github.com/openjdk/jdk8u/blob/master/hotspot/src/os/linux/vm/attachListener_linux.cpp#L350-L358",target:"_blank",rel:"noopener noreferrer"},C=a("OpenJDK 8u implementation"),$=a(" still requires an exact UID/GID match, and vendor builds may have different policies. This check runs inside the target JVM and cannot be bypassed by adding Linux capabilities. Use the same-UID/GID configuration for targets with this behavior."),G=t(`<p>When the target HotSpot accepts a root client, explicitly retain the following four capabilities to support the initial attach, temporary directories with restrictive permissions, and cleanup by <code>stop</code>.</p><table><thead><tr><th>Setting or capability</th><th>Purpose</th></tr></thead><tbody><tr><td><code>shareProcessNamespace: true</code></td><td>Makes the application JVM's PID and <code>/proc/<pid></code> visible to the sidecar</td></tr><tr><td><code>runAsUser: 0</code></td><td>Passes the cross-UID check when the target HotSpot accepts root clients</td></tr><tr><td><code>SYS_PTRACE</code></td><td>Passes ptrace access checks for <code>/proc/<pid></code>, <code>/proc/<pid>/root</code>, and mount namespace information</td></tr><tr><td><code>KILL</code></td><td>Sends <code>SIGQUIT</code> across UIDs when the target JVM's attach listener has not started</td></tr><tr><td><code>DAC_OVERRIDE</code></td><td>Connects to the target user's <code>0600</code> attach socket and writes to the target container's temporary directory</td></tr><tr><td><code>CHOWN</code></td><td>Gives the copied Arthas Home to the target user so that <code>stop</code> can remove it</td></tr></tbody></table><p>The following <code>securityContext</code> fragment is for a cross-UID sidecar. It does not require <code>privileged: true</code>, <code>SYS_ADMIN</code>, <code>hostPID</code>, or <code>hostPath</code>.</p><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code><span class="token key atrule">spec</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">shareProcessNamespace</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>
|
||||
<span class="token key atrule">containers</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> arthas<span class="token punctuation">-</span>sidecar
|
||||
<span class="token key atrule">image</span><span class="token punctuation">:</span> your<span class="token punctuation">-</span>registry/arthas<span class="token punctuation">-</span>sidecar<span class="token punctuation">:</span>4.3.4
|
||||
<span class="token key atrule">securityContext</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">runAsUser</span><span class="token punctuation">:</span> <span class="token number">0</span>
|
||||
<span class="token key atrule">runAsGroup</span><span class="token punctuation">:</span> <span class="token number">0</span>
|
||||
<span class="token key atrule">allowPrivilegeEscalation</span><span class="token punctuation">:</span> <span class="token boolean important">false</span>
|
||||
<span class="token key atrule">seccompProfile</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">type</span><span class="token punctuation">:</span> RuntimeDefault
|
||||
<span class="token key atrule">capabilities</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">drop</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">"ALL"</span><span class="token punctuation">]</span>
|
||||
<span class="token key atrule">add</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">-</span> SYS_PTRACE
|
||||
<span class="token punctuation">-</span> KILL
|
||||
<span class="token punctuation">-</span> DAC_OVERRIDE
|
||||
<span class="token punctuation">-</span> CHOWN
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Container runtime default capability sets usually include <code>KILL</code>, <code>DAC_OVERRIDE</code>, and <code>CHOWN</code>, so adding only <code>SYS_PTRACE</code> is often sufficient when the defaults are retained. The example above drops <code>ALL</code> and adds each required capability explicitly, making the result independent of runtime defaults.</p>`,5),W={class:"custom-container warning"},F=s("p",{class:"custom-container-title"},"WARNING",-1),Y=a("The Kubernetes "),z={href:"https://kubernetes.io/docs/concepts/security/pod-security-standards/",target:"_blank",rel:"noopener noreferrer"},B=a("Baseline and Restricted Pod Security Standards"),Q=a(" both disallow adding "),X=s("code",null,"SYS_PTRACE",-1),Z=a("; Restricted also disallows UID "),aa=s("code",null,"0",-1),sa=a(". A cluster administrator must provide an exemption or a dedicated namespace for this trusted cross-UID workload. A shared PID namespace also exposes process arguments, environment variables, and "),ea=s("code",null,"/proc/<pid>/root",-1),na=a(" for other containers in the Pod. Do not make this sidecar available to untrusted users."),ta=t(`<p>The Arthas attach process does not call the Kubernetes API, so the sidecar ServiceAccount needs no additional RBAC permissions. An operator who enters the sidecar with <code>kubectl exec</code> still needs the corresponding <code>pods/exec</code> permission.</p><p>The sidecar image must contain a full JDK and Arthas 4.3.4 or later. With a shared PID namespace, the application process is usually no longer PID <code>1</code>; use <code>ps</code> to find its actual PID first.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>kubectl <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> <span class="token variable">\${pod}</span> <span class="token parameter variable">--container</span> arthas-sidecar -- <span class="token function">sh</span>
|
||||
|
||||
<span class="token function">ps</span> <span class="token parameter variable">-ef</span>
|
||||
<span class="token assign-left variable">TARGET_PID</span><span class="token operator">=</span><span class="token operator"><</span>java-pid<span class="token operator">></span>
|
||||
<span class="token function">java</span> <span class="token parameter variable">-jar</span> /opt/arthas/arthas-boot.jar <span class="token string">"<span class="token variable">\${TARGET_PID}</span>"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>If the same-UID/GID configuration still cannot attach, check whether the target JVM uses <code>-XX:+DisableAttachMechanism</code>, and whether seccomp, AppArmor, SELinux, or the <code>/proc</code> mount policy blocks process access. If the target JVM uses a custom <code>java.io.tmpdir</code>, that directory must also be writable by the attach client.</p><h2 id="install-arthas-into-the-base-docker-image" tabindex="-1"><a class="header-anchor" href="#install-arthas-into-the-base-docker-image" aria-hidden="true">#</a> Install Arthas into the base Docker image</h2><p>It's easy to install Arthas into your Docker image.</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk-alpine
|
||||
|
||||
# copy arthas
|
||||
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>If you want to specify a version, you can view all the tags:</p>`,8),oa={href:"https://hub.docker.com/r/hengyunabc/arthas/tags",target:"_blank",rel:"noopener noreferrer"},ia=a("https://hub.docker.com/r/hengyunabc/arthas/tags");function ca(ra,pa){const e=r("ExternalLinkIcon");return i(),c("div",null,[l,s("p",null,[d,s("a",u,[h,n(e)]),m,k,v]),b,s("p",null,[g,f,_,s("a",y,[A,n(e)]),I]),x,s("p",null,[D,s("a",w,[j,n(e)]),R,T,P,J,S]),q,s("p",null,[E,N,V,s("a",M,[O,n(e)]),U,H,L,s("a",K,[C,n(e)]),$]),G,s("div",W,[F,s("p",null,[Y,s("a",z,[B,n(e)]),Q,X,Z,aa,sa,ea,na])]),ta,s("p",null,[s("a",oa,[ia,n(e)])])])}const da=o(p,[["render",ca],["__file","docker.html.vue"]]);export{da as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-02361049","path":"/doc/docker.html","title":"Docker","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u5728 Docker \u91CC\u4F7F\u7528 JDK","slug":"\u5728-docker-\u91CC\u4F7F\u7528-jdk","link":"#\u5728-docker-\u91CC\u4F7F\u7528-jdk","children":[{"level":3,"title":"\u4F7F\u7528\u516C\u5F00\u7684 JDK \u955C\u50CF","slug":"\u4F7F\u7528\u516C\u5F00\u7684-jdk-\u955C\u50CF","link":"#\u4F7F\u7528\u516C\u5F00\u7684-jdk-\u955C\u50CF","children":[]},{"level":3,"title":"\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5","slug":"\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5","link":"#\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5","children":[]}]},{"level":2,"title":"\u901A\u8FC7 Docker \u5FEB\u901F\u5165\u95E8","slug":"\u901A\u8FC7-docker-\u5FEB\u901F\u5165\u95E8","link":"#\u901A\u8FC7-docker-\u5FEB\u901F\u5165\u95E8","children":[]},{"level":2,"title":"\u8BCA\u65AD Docker \u91CC\u7684 Java \u8FDB\u7A0B","slug":"\u8BCA\u65AD-docker-\u91CC\u7684-java-\u8FDB\u7A0B","link":"#\u8BCA\u65AD-docker-\u91CC\u7684-java-\u8FDB\u7A0B","children":[]},{"level":2,"title":"\u8BCA\u65AD k8s \u91CC\u5BB9\u5668\u91CC\u7684 Java \u8FDB\u7A0B","slug":"\u8BCA\u65AD-k8s-\u91CC\u5BB9\u5668\u91CC\u7684-java-\u8FDB\u7A0B","link":"#\u8BCA\u65AD-k8s-\u91CC\u5BB9\u5668\u91CC\u7684-java-\u8FDB\u7A0B","children":[]},{"level":2,"title":"\u628A Arthas \u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC","slug":"\u628A-arthas-\u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC","link":"#\u628A-arthas-\u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/docker.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-02361049","path":"/doc/docker.html","title":"Docker","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u5728 Docker \u91CC\u4F7F\u7528 JDK","slug":"\u5728-docker-\u91CC\u4F7F\u7528-jdk","link":"#\u5728-docker-\u91CC\u4F7F\u7528-jdk","children":[{"level":3,"title":"\u4F7F\u7528\u516C\u5F00\u7684 JDK \u955C\u50CF","slug":"\u4F7F\u7528\u516C\u5F00\u7684-jdk-\u955C\u50CF","link":"#\u4F7F\u7528\u516C\u5F00\u7684-jdk-\u955C\u50CF","children":[]},{"level":3,"title":"\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5","slug":"\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5","link":"#\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5","children":[]}]},{"level":2,"title":"\u901A\u8FC7 Docker \u5FEB\u901F\u5165\u95E8","slug":"\u901A\u8FC7-docker-\u5FEB\u901F\u5165\u95E8","link":"#\u901A\u8FC7-docker-\u5FEB\u901F\u5165\u95E8","children":[]},{"level":2,"title":"\u8BCA\u65AD Docker \u91CC\u7684 Java \u8FDB\u7A0B","slug":"\u8BCA\u65AD-docker-\u91CC\u7684-java-\u8FDB\u7A0B","link":"#\u8BCA\u65AD-docker-\u91CC\u7684-java-\u8FDB\u7A0B","children":[]},{"level":2,"title":"\u8BCA\u65AD k8s \u91CC\u5BB9\u5668\u91CC\u7684 Java \u8FDB\u7A0B","slug":"\u8BCA\u65AD-k8s-\u91CC\u5BB9\u5668\u91CC\u7684-java-\u8FDB\u7A0B","link":"#\u8BCA\u65AD-k8s-\u91CC\u5BB9\u5668\u91CC\u7684-java-\u8FDB\u7A0B","children":[{"level":3,"title":"\u4ECE\u4E34\u65F6 debug \u5BB9\u5668 attach","slug":"\u4ECE\u4E34\u65F6-debug-\u5BB9\u5668-attach","link":"#\u4ECE\u4E34\u65F6-debug-\u5BB9\u5668-attach","children":[]},{"level":3,"title":"\u4ECE sidecar \u5BB9\u5668 attach","slug":"\u4ECE-sidecar-\u5BB9\u5668-attach","link":"#\u4ECE-sidecar-\u5BB9\u5668-attach","children":[]}]},{"level":2,"title":"\u628A Arthas \u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC","slug":"\u628A-arthas-\u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC","link":"#\u628A-arthas-\u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/docker.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +0,0 @@
|
||||
const e=JSON.parse('{"key":"v-682151b5","path":"/en/doc/docker.html","title":"Docker","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Use JDK in Docker","slug":"use-jdk-in-docker","link":"#use-jdk-in-docker","children":[{"level":3,"title":"Use public JDK image","slug":"use-public-jdk-image","link":"#use-public-jdk-image","children":[]},{"level":3,"title":"Install via package management software","slug":"install-via-package-management-software","link":"#install-via-package-management-software","children":[]}]},{"level":2,"title":"Quick start with Docker","slug":"quick-start-with-docker","link":"#quick-start-with-docker","children":[]},{"level":2,"title":"Diagnose the Java process in Docker","slug":"diagnose-the-java-process-in-docker","link":"#diagnose-the-java-process-in-docker","children":[]},{"level":2,"title":"Diagnose the Java process in the container in k8s","slug":"diagnose-the-java-process-in-the-container-in-k8s","link":"#diagnose-the-java-process-in-the-container-in-k8s","children":[]},{"level":2,"title":"Install Arthas into the base Docker image","slug":"install-arthas-into-the-base-docker-image","link":"#install-arthas-into-the-base-docker-image","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/docker.md","version":"4.3.3"}');export{e as data};
|
||||
@@ -1,50 +0,0 @@
|
||||
import{_ as n,o as e,c as t,a,b as p,d as i,e as l,r as o}from"./app.524ecf5c.js";const r={},c=i(`<h1 id="docker" tabindex="-1"><a class="header-anchor" href="#docker" aria-hidden="true">#</a> Docker</h1><h2 id="\u5728-docker-\u91CC\u4F7F\u7528-jdk" tabindex="-1"><a class="header-anchor" href="#\u5728-docker-\u91CC\u4F7F\u7528-jdk" aria-hidden="true">#</a> \u5728 Docker \u91CC\u4F7F\u7528 JDK</h2><p>\u5F88\u591A\u65F6\u5019\uFF0C\u5E94\u7528\u5728 docker \u91CC\u51FA\u73B0 arthas \u65E0\u6CD5\u5DE5\u4F5C\u7684\u95EE\u9898\uFF0C\u662F\u56E0\u4E3A\u5E94\u7528\u6CA1\u6709\u5B89\u88C5 JDK \uFF0C\u800C\u662F\u5B89\u88C5\u4E86 JRE \u3002\u5982\u679C\u53EA\u5B89\u88C5\u4E86 JRE\uFF0C\u5219\u4F1A\u7F3A\u5C11\u5F88\u591A JAVA \u7684\u547D\u4EE4\u884C\u5DE5\u5177\u548C\u7C7B\u5E93\uFF0CArthas \u4E5F\u6CA1\u529E\u6CD5\u6B63\u5E38\u5DE5\u4F5C\u3002\u4E0B\u9762\u4ECB\u7ECD\u4E24\u79CD\u5E38\u89C1\u7684\u5728 Docker \u91CC\u4F7F\u7528 JDK \u7684\u65B9\u5F0F\u3002</p><h3 id="\u4F7F\u7528\u516C\u5F00\u7684-jdk-\u955C\u50CF" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u516C\u5F00\u7684-jdk-\u955C\u50CF" aria-hidden="true">#</a> \u4F7F\u7528\u516C\u5F00\u7684 JDK \u955C\u50CF</h3><ul><li>https://hub.docker.com/_/openjdk/</li></ul><p>\u6BD4\u5982\uFF1A</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u6216\u8005\uFF1A</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk-alpine
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5" tabindex="-1"><a class="header-anchor" href="#\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5" aria-hidden="true">#</a> \u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5</h3><p>\u6BD4\u5982\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token comment"># Install OpenJDK-8</span>
|
||||
RUN <span class="token function">apt-get</span> update <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> openjdk-8-jdk <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> ant <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> clean<span class="token punctuation">;</span>
|
||||
|
||||
<span class="token comment"># Fix certificate issues</span>
|
||||
RUN <span class="token function">apt-get</span> update <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> ca-certificates-java <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> clean <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
update-ca-certificates -f<span class="token punctuation">;</span>
|
||||
|
||||
<span class="token comment"># Setup JAVA_HOME -- useful for docker commandline</span>
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
|
||||
RUN <span class="token builtin class-name">export</span> JAVA_HOME
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u6216\u8005\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>RUN yum <span class="token function">install</span> <span class="token parameter variable">-y</span> <span class="token punctuation">\\</span>
|
||||
java-1.8.0-openjdk <span class="token punctuation">\\</span>
|
||||
java-1.8.0-openjdk-devel
|
||||
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/
|
||||
RUN <span class="token builtin class-name">export</span> JAVA_HOME
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="\u901A\u8FC7-docker-\u5FEB\u901F\u5165\u95E8" tabindex="-1"><a class="header-anchor" href="#\u901A\u8FC7-docker-\u5FEB\u901F\u5165\u95E8" aria-hidden="true">#</a> \u901A\u8FC7 Docker \u5FEB\u901F\u5165\u95E8</h2><ol><li><p>\u5220\u9664\u672C\u5730\u5DF2\u6709\u7684<code>math-game</code> docker container\uFF08\u975E\u5FC5\u8981\uFF09</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> stop math-game <span class="token operator">||</span> <span class="token boolean">true</span> <span class="token operator">&&</span> <span class="token function">docker</span> <span class="token function">rm</span> math-game <span class="token operator">||</span> <span class="token boolean">true</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>\u542F\u52A8<code>math-game</code></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">--name</span> math-game <span class="token parameter variable">-it</span> hengyunabc/arthas:latest /bin/sh <span class="token parameter variable">-c</span> <span class="token string">"java -jar /opt/arthas/math-game.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>\u542F\u52A8<code>arthas-boot</code>\u6765\u8FDB\u884C\u8BCA\u65AD</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> math-game /bin/sh <span class="token parameter variable">-c</span> <span class="token string">"java -jar /opt/arthas/arthas-boot.jar"</span>
|
||||
* <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span>: <span class="token number">9</span> jar
|
||||
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> arthas home: /opt/arthas
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Try to attach process <span class="token number">9</span>
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Attach process <span class="token number">9</span> success.
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> arthas-client connect <span class="token number">127.0</span>.0.1 <span class="token number">3658</span>
|
||||
,---. ,------. ,--------.,--. ,--. ,---. ,---.
|
||||
/ O <span class="token punctuation">\\</span> <span class="token operator">|</span> .--. <span class="token string">''</span>--. .--<span class="token string">'| '</span>--<span class="token string">' | / O \\ '</span> .-<span class="token string">'
|
||||
| .-. || '</span>--<span class="token string">'.'</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> .--. <span class="token operator">||</span> .-. <span class="token operator">|</span><span class="token variable"><span class="token variable">\`</span><span class="token builtin class-name">.</span> <span class="token variable">\`</span></span>-.
|
||||
<span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span><span class="token punctuation">\\</span> <span class="token punctuation">\\</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span>.-<span class="token string">' |
|
||||
\`--'</span> <span class="token variable"><span class="token variable">\`</span>--'<span class="token variable">\`</span></span>--<span class="token string">' '</span>--<span class="token string">' \`--'</span> <span class="token variable"><span class="token variable">\`</span>--' <span class="token variable">\`</span></span>--<span class="token string">'\`--'</span> <span class="token variable"><span class="token variable">\`</span>--'<span class="token variable">\`</span></span>-----'
|
||||
|
||||
|
||||
wiki: https://arthas.aliyun.com/doc
|
||||
version: <span class="token number">3.0</span>.5
|
||||
pid: <span class="token number">9</span>
|
||||
time: <span class="token number">2018</span>-12-18 <span class="token number">11</span>:30:36
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ol><h2 id="\u8BCA\u65AD-docker-\u91CC\u7684-java-\u8FDB\u7A0B" tabindex="-1"><a class="header-anchor" href="#\u8BCA\u65AD-docker-\u91CC\u7684-java-\u8FDB\u7A0B" aria-hidden="true">#</a> \u8BCA\u65AD Docker \u91CC\u7684 Java \u8FDB\u7A0B</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">docker</span> <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> <span class="token variable">\${containerId}</span> /bin/bash <span class="token parameter variable">-c</span> <span class="token string">"wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="\u8BCA\u65AD-k8s-\u91CC\u5BB9\u5668\u91CC\u7684-java-\u8FDB\u7A0B" tabindex="-1"><a class="header-anchor" href="#\u8BCA\u65AD-k8s-\u91CC\u5BB9\u5668\u91CC\u7684-java-\u8FDB\u7A0B" aria-hidden="true">#</a> \u8BCA\u65AD k8s \u91CC\u5BB9\u5668\u91CC\u7684 Java \u8FDB\u7A0B</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>kubectl <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> <span class="token variable">\${pod}</span> <span class="token parameter variable">--container</span> <span class="token variable">\${containerId}</span> -- /bin/bash <span class="token parameter variable">-c</span> <span class="token string">"wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="\u628A-arthas-\u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC" tabindex="-1"><a class="header-anchor" href="#\u628A-arthas-\u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC" aria-hidden="true">#</a> \u628A Arthas \u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC</h2><p>\u53EF\u4EE5\u5F88\u7B80\u5355\u628A Arthas \u5B89\u88C5\u5230\u4F60\u7684 Docker \u955C\u50CF\u91CC\u3002</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk-alpine
|
||||
|
||||
# copy arthas
|
||||
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u5982\u679C\u60F3\u6307\u5B9A\u7248\u672C\uFF0C\u53EF\u4EE5\u67E5\u770B\u5177\u4F53\u7684 tags\uFF1A</p>`,24),d={href:"https://hub.docker.com/r/hengyunabc/arthas/tags",target:"_blank",rel:"noopener noreferrer"},u=l("https://hub.docker.com/r/hengyunabc/arthas/tags");function v(k,m){const s=o("ExternalLinkIcon");return e(),t("div",null,[c,a("p",null,[a("a",d,[u,p(s)])])])}const h=n(r,[["render",v],["__file","docker.html.vue"]]);export{h as default};
|
||||
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-682151b5","path":"/en/doc/docker.html","title":"Docker","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Use JDK in Docker","slug":"use-jdk-in-docker","link":"#use-jdk-in-docker","children":[{"level":3,"title":"Use public JDK image","slug":"use-public-jdk-image","link":"#use-public-jdk-image","children":[]},{"level":3,"title":"Install via package management software","slug":"install-via-package-management-software","link":"#install-via-package-management-software","children":[]}]},{"level":2,"title":"Quick start with Docker","slug":"quick-start-with-docker","link":"#quick-start-with-docker","children":[]},{"level":2,"title":"Diagnose the Java process in Docker","slug":"diagnose-the-java-process-in-docker","link":"#diagnose-the-java-process-in-docker","children":[]},{"level":2,"title":"Diagnose a Java process in Kubernetes","slug":"diagnose-a-java-process-in-kubernetes","link":"#diagnose-a-java-process-in-kubernetes","children":[{"level":3,"title":"Attach from an ephemeral debug container","slug":"attach-from-an-ephemeral-debug-container","link":"#attach-from-an-ephemeral-debug-container","children":[]},{"level":3,"title":"Attach from a sidecar container","slug":"attach-from-a-sidecar-container","link":"#attach-from-a-sidecar-container","children":[]}]},{"level":2,"title":"Install Arthas into the base Docker image","slug":"install-arthas-into-the-base-docker-image","link":"#install-arthas-into-the-base-docker-image","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/docker.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -0,0 +1,107 @@
|
||||
import{_ as o,o as c,c as p,a,b as e,d as t,e as s,r as i}from"./app.e2427bec.js";const l={},r=t(`<h1 id="docker" tabindex="-1"><a class="header-anchor" href="#docker" aria-hidden="true">#</a> Docker</h1><h2 id="\u5728-docker-\u91CC\u4F7F\u7528-jdk" tabindex="-1"><a class="header-anchor" href="#\u5728-docker-\u91CC\u4F7F\u7528-jdk" aria-hidden="true">#</a> \u5728 Docker \u91CC\u4F7F\u7528 JDK</h2><p>\u5F88\u591A\u65F6\u5019\uFF0C\u5E94\u7528\u5728 docker \u91CC\u51FA\u73B0 arthas \u65E0\u6CD5\u5DE5\u4F5C\u7684\u95EE\u9898\uFF0C\u662F\u56E0\u4E3A\u5E94\u7528\u6CA1\u6709\u5B89\u88C5 JDK \uFF0C\u800C\u662F\u5B89\u88C5\u4E86 JRE \u3002\u5982\u679C\u53EA\u5B89\u88C5\u4E86 JRE\uFF0C\u5219\u4F1A\u7F3A\u5C11\u5F88\u591A JAVA \u7684\u547D\u4EE4\u884C\u5DE5\u5177\u548C\u7C7B\u5E93\uFF0CArthas \u4E5F\u6CA1\u529E\u6CD5\u6B63\u5E38\u5DE5\u4F5C\u3002\u4E0B\u9762\u4ECB\u7ECD\u4E24\u79CD\u5E38\u89C1\u7684\u5728 Docker \u91CC\u4F7F\u7528 JDK \u7684\u65B9\u5F0F\u3002</p><h3 id="\u4F7F\u7528\u516C\u5F00\u7684-jdk-\u955C\u50CF" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u516C\u5F00\u7684-jdk-\u955C\u50CF" aria-hidden="true">#</a> \u4F7F\u7528\u516C\u5F00\u7684 JDK \u955C\u50CF</h3><ul><li>https://hub.docker.com/_/openjdk/</li></ul><p>\u6BD4\u5982\uFF1A</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u6216\u8005\uFF1A</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk-alpine
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5" tabindex="-1"><a class="header-anchor" href="#\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5" aria-hidden="true">#</a> \u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5</h3><p>\u6BD4\u5982\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token comment"># Install OpenJDK-8</span>
|
||||
RUN <span class="token function">apt-get</span> update <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> openjdk-8-jdk <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> <span class="token parameter variable">-y</span> ant <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> clean<span class="token punctuation">;</span>
|
||||
|
||||
<span class="token comment"># Fix certificate issues</span>
|
||||
RUN <span class="token function">apt-get</span> update <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> <span class="token function">install</span> ca-certificates-java <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
<span class="token function">apt-get</span> clean <span class="token operator">&&</span> <span class="token punctuation">\\</span>
|
||||
update-ca-certificates -f<span class="token punctuation">;</span>
|
||||
|
||||
<span class="token comment"># Setup JAVA_HOME -- useful for docker commandline</span>
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
|
||||
RUN <span class="token builtin class-name">export</span> JAVA_HOME
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u6216\u8005\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>RUN yum <span class="token function">install</span> <span class="token parameter variable">-y</span> <span class="token punctuation">\\</span>
|
||||
java-1.8.0-openjdk <span class="token punctuation">\\</span>
|
||||
java-1.8.0-openjdk-devel
|
||||
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/
|
||||
RUN <span class="token builtin class-name">export</span> JAVA_HOME
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="\u901A\u8FC7-docker-\u5FEB\u901F\u5165\u95E8" tabindex="-1"><a class="header-anchor" href="#\u901A\u8FC7-docker-\u5FEB\u901F\u5165\u95E8" aria-hidden="true">#</a> \u901A\u8FC7 Docker \u5FEB\u901F\u5165\u95E8</h2><ol><li><p>\u5220\u9664\u672C\u5730\u5DF2\u6709\u7684<code>math-game</code> docker container\uFF08\u975E\u5FC5\u8981\uFF09</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> stop math-game <span class="token operator">||</span> <span class="token boolean">true</span> <span class="token operator">&&</span> <span class="token function">docker</span> <span class="token function">rm</span> math-game <span class="token operator">||</span> <span class="token boolean">true</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>\u542F\u52A8<code>math-game</code></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">--name</span> math-game <span class="token parameter variable">-it</span> hengyunabc/arthas:latest /bin/sh <span class="token parameter variable">-c</span> <span class="token string">"java -jar /opt/arthas/math-game.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>\u542F\u52A8<code>arthas-boot</code>\u6765\u8FDB\u884C\u8BCA\u65AD</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">docker</span> <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> math-game /bin/sh <span class="token parameter variable">-c</span> <span class="token string">"java -jar /opt/arthas/arthas-boot.jar"</span>
|
||||
* <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span>: <span class="token number">9</span> jar
|
||||
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> arthas home: /opt/arthas
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Try to attach process <span class="token number">9</span>
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> Attach process <span class="token number">9</span> success.
|
||||
<span class="token punctuation">[</span>INFO<span class="token punctuation">]</span> arthas-client connect <span class="token number">127.0</span>.0.1 <span class="token number">3658</span>
|
||||
,---. ,------. ,--------.,--. ,--. ,---. ,---.
|
||||
/ O <span class="token punctuation">\\</span> <span class="token operator">|</span> .--. <span class="token string">''</span>--. .--<span class="token string">'| '</span>--<span class="token string">' | / O \\ '</span> .-<span class="token string">'
|
||||
| .-. || '</span>--<span class="token string">'.'</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> .--. <span class="token operator">||</span> .-. <span class="token operator">|</span><span class="token variable"><span class="token variable">\`</span><span class="token builtin class-name">.</span> <span class="token variable">\`</span></span>-.
|
||||
<span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span><span class="token punctuation">\\</span> <span class="token punctuation">\\</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span> <span class="token operator">|</span> <span class="token operator">|</span>.-<span class="token string">' |
|
||||
\`--'</span> <span class="token variable"><span class="token variable">\`</span>--'<span class="token variable">\`</span></span>--<span class="token string">' '</span>--<span class="token string">' \`--'</span> <span class="token variable"><span class="token variable">\`</span>--' <span class="token variable">\`</span></span>--<span class="token string">'\`--'</span> <span class="token variable"><span class="token variable">\`</span>--'<span class="token variable">\`</span></span>-----'
|
||||
|
||||
|
||||
wiki: https://arthas.aliyun.com/doc
|
||||
version: <span class="token number">3.0</span>.5
|
||||
pid: <span class="token number">9</span>
|
||||
time: <span class="token number">2018</span>-12-18 <span class="token number">11</span>:30:36
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ol><h2 id="\u8BCA\u65AD-docker-\u91CC\u7684-java-\u8FDB\u7A0B" tabindex="-1"><a class="header-anchor" href="#\u8BCA\u65AD-docker-\u91CC\u7684-java-\u8FDB\u7A0B" aria-hidden="true">#</a> \u8BCA\u65AD Docker \u91CC\u7684 Java \u8FDB\u7A0B</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">docker</span> <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> <span class="token variable">\${containerId}</span> /bin/bash <span class="token parameter variable">-c</span> <span class="token string">"wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="\u8BCA\u65AD-k8s-\u91CC\u5BB9\u5668\u91CC\u7684-java-\u8FDB\u7A0B" tabindex="-1"><a class="header-anchor" href="#\u8BCA\u65AD-k8s-\u91CC\u5BB9\u5668\u91CC\u7684-java-\u8FDB\u7A0B" aria-hidden="true">#</a> \u8BCA\u65AD k8s \u91CC\u5BB9\u5668\u91CC\u7684 Java \u8FDB\u7A0B</h2><p>\u5982\u679C\u5E94\u7528\u5BB9\u5668\u5DF2\u7ECF\u5305\u542B shell\u3001\u5B8C\u6574 JDK \u548C\u4E0B\u8F7D\u5DE5\u5177\uFF0C\u53EF\u4EE5\u76F4\u63A5\u8FDB\u5165\u5E94\u7528\u5BB9\u5668\u542F\u52A8 Arthas\u3002</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>kubectl <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> <span class="token variable">\${pod}</span> <span class="token parameter variable">--container</span> <span class="token variable">\${containerName}</span> -- /bin/bash <span class="token parameter variable">-c</span> <span class="token string">"wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="\u4ECE\u4E34\u65F6-debug-\u5BB9\u5668-attach" tabindex="-1"><a class="header-anchor" href="#\u4ECE\u4E34\u65F6-debug-\u5BB9\u5668-attach" aria-hidden="true">#</a> \u4ECE\u4E34\u65F6 debug \u5BB9\u5668 attach</h3>`,22),d=s("\u4ECE "),u={href:"https://github.com/alibaba/arthas/commit/21cf2e9ba52b305290be7223b980ff504bb9cb5b",target:"_blank",rel:"noopener noreferrer"},k=s("4.3.4"),v=s(" \u5F00\u59CB\uFF0CArthas \u53EF\u4EE5\u4ECE "),m=a("code",null,"kubectl debug",-1),b=s(" \u521B\u5EFA\u7684\u4E34\u65F6\u5BB9\u5668 attach \u5E94\u7528\u5BB9\u5668\u91CC\u7684 JVM\u3002\u5E94\u7528\u955C\u50CF\u4F7F\u7528 distroless\uFF0C\u6216\u8005\u6CA1\u6709 shell\u3001JDK \u65F6\uFF0C\u53EF\u4EE5\u7528\u8FD9\u4E2A\u65B9\u5F0F\u628A\u8BCA\u65AD\u5DE5\u5177\u4E34\u65F6\u52A0\u5165\u6B63\u5728\u8FD0\u884C\u7684 Pod\u3002"),h=t(`<p>\u4F7F\u7528\u524D\u9700\u8981\u6EE1\u8DB3\u4E0B\u9762\u7684\u6761\u4EF6\u3002</p><ul><li>Pod \u8FD0\u884C\u5728 Linux \u4E0A\u3002</li><li>Kubernetes \u96C6\u7FA4\u652F\u6301\u4E34\u65F6\u5BB9\u5668\uFF0C\u5BB9\u5668\u8FD0\u884C\u65F6\u652F\u6301 <code>kubectl debug --target</code>\u3002\u8FDB\u5165\u4E34\u65F6\u5BB9\u5668\u540E\u5FC5\u987B\u80FD\u770B\u5230\u76EE\u6807 JVM \u7684 PID\u3002</li><li>\u4E34\u65F6\u5BB9\u5668\u63D0\u4F9B\u5B8C\u6574 JDK\uFF0C\u5E76\u4F7F\u7528 Arthas 4.3.4 \u6216\u66F4\u9AD8\u7248\u672C\u3002</li><li>\u4E34\u65F6\u5BB9\u5668\u4E0E\u76EE\u6807 JVM \u7684 UID \u4E0D\u540C\u65F6\uFF0C\u4E34\u65F6\u5BB9\u5668\u9700\u8981\u4EE5 root \u8EAB\u4EFD\u8FD0\u884C\uFF0C\u5E76\u80FD\u8BBF\u95EE\u76EE\u6807\u8FDB\u7A0B\u7684 <code>/proc/<pid>/root</code>\u3002\u76EE\u6807 HotSpot \u8FD8\u5FC5\u987B\u5141\u8BB8 UID <code>0</code> \u7684 attach \u5BA2\u6237\u7AEF\u3002\u90E8\u5206\u65E7 JDK \u53EA\u63A5\u53D7\u76F8\u540C UID/GID\uFF0C\u6B64\u65F6\u9700\u8981\u8BA9\u4E24\u4E2A\u5BB9\u5668\u4F7F\u7528\u76F8\u540C UID/GID\u3002</li></ul><div class="custom-container warning"><p class="custom-container-title">\u6CE8\u610F</p><p>\u4E0B\u9762\u7684 <code>--profile=sysadmin</code> \u4F1A\u521B\u5EFA privileged \u4E34\u65F6\u5BB9\u5668\u3002\u8BF7\u53EA\u5728\u83B7\u5F97\u6388\u6743\u4E14\u96C6\u7FA4\u5B89\u5168\u7B56\u7565\u5141\u8BB8\u65F6\u4F7F\u7528\u3002\u5E94\u7528 Pod \u5F3A\u5236\u4EE5\u975E root \u7528\u6237\u8FD0\u884C\u65F6\uFF0C\u9700\u8981\u7531\u96C6\u7FA4\u7BA1\u7406\u5458\u63D0\u4F9B\u5177\u5907\u76F8\u5E94\u6743\u9650\u7684\u8C03\u8BD5\u914D\u7F6E\u3002</p></div><p>\u5148\u628A\u4E34\u65F6\u5BB9\u5668\u52A0\u5165\u6B63\u5728\u8FD0\u884C\u7684 Pod\u3002<code>\${containerName}</code> \u662F\u76EE\u6807\u5E94\u7528\u5BB9\u5668\u7684\u540D\u79F0\u3002</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>kubectl debug <span class="token parameter variable">-it</span> <span class="token variable">\${pod}</span> <span class="token punctuation">\\</span>
|
||||
<span class="token parameter variable">--target</span><span class="token operator">=</span><span class="token variable">\${containerName}</span> <span class="token punctuation">\\</span>
|
||||
<span class="token parameter variable">--image</span><span class="token operator">=</span>amazoncorretto:8-alpine-jdk <span class="token punctuation">\\</span>
|
||||
<span class="token parameter variable">--profile</span><span class="token operator">=</span>sysadmin <span class="token punctuation">\\</span>
|
||||
-- <span class="token function">sh</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,5),g=a("code",null,"--target",-1),_=s(" \u8BA9\u4E34\u65F6\u5BB9\u5668\u8FDB\u5165\u76EE\u6807\u5BB9\u5668\u7684 PID namespace\u3002\u4E0D\u540C Kubernetes \u7248\u672C\u7684\u914D\u7F6E\u65B9\u5F0F\u53EF\u4EE5\u53C2\u8003 "),f={href:"https://kubernetes.io/zh-cn/docs/tasks/debug/debug-application/debug-running-pod/",target:"_blank",rel:"noopener noreferrer"},A=s("Kubernetes \u8C03\u8BD5\u8FD0\u884C\u4E2D\u7684 Pod"),y=s("\u3002"),D=t(`<p>\u8FDB\u5165\u4E34\u65F6\u5BB9\u5668\u540E\uFF0C\u4E0B\u8F7D\u5E76\u89E3\u538B\u5B8C\u6574\u7684 Arthas 4.3.4 \u53D1\u884C\u5305\u3002</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token assign-left variable">ARTHAS_VERSION</span><span class="token operator">=</span><span class="token number">4.3</span>.4
|
||||
<span class="token assign-left variable">ARTHAS_HOME</span><span class="token operator">=</span>/tmp/arthas-<span class="token variable">\${ARTHAS_VERSION}</span>
|
||||
|
||||
<span class="token function">wget</span> <span class="token parameter variable">-qO</span> /tmp/arthas.zip <span class="token punctuation">\\</span>
|
||||
<span class="token string">"https://repo1.maven.org/maven2/com/taobao/arthas/arthas-packaging/<span class="token variable">\${ARTHAS_VERSION}</span>/arthas-packaging-<span class="token variable">\${ARTHAS_VERSION}</span>-bin.zip"</span>
|
||||
<span class="token function">mkdir</span> <span class="token parameter variable">-p</span> <span class="token string">"<span class="token variable">\${ARTHAS_HOME}</span>"</span>
|
||||
<span class="token function">unzip</span> <span class="token parameter variable">-q</span> /tmp/arthas.zip <span class="token parameter variable">-d</span> <span class="token string">"<span class="token variable">\${ARTHAS_HOME}</span>"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u7528 <code>ps</code> \u67E5\u627E\u76EE\u6807 JVM \u7684 PID\u3002\u4E0B\u9762\u4EE5 PID <code>1</code> \u4E3A\u4F8B\u3002</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">ps</span> <span class="token parameter variable">-ef</span>
|
||||
|
||||
<span class="token assign-left variable">TARGET_PID</span><span class="token operator">=</span><span class="token number">1</span>
|
||||
<span class="token function">java</span> <span class="token parameter variable">-jar</span> <span class="token string">"<span class="token variable">\${ARTHAS_HOME}</span>/arthas-boot.jar"</span> <span class="token string">"<span class="token variable">\${TARGET_PID}</span>"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Arthas \u4F1A\u81EA\u52A8\u6BD4\u8F83\u4E34\u65F6\u5BB9\u5668\u548C\u76EE\u6807 JVM \u7684 mount namespace\u3002\u68C0\u6D4B\u5230\u4E24\u8005\u4E0D\u540C\u65F6\uFF0CArthas \u4F1A\u66B4\u9732\u76EE\u6807 JVM \u7684 attach socket\uFF0C\u5E76\u628A\u5B8C\u6574\u7684 Arthas Home \u590D\u5236\u5230\u76EE\u6807\u5BB9\u5668\u7684\u4E34\u65F6\u76EE\u5F55\u3002\u6574\u4E2A\u8FC7\u7A0B\u4E0D\u9700\u8981\u4E24\u4E2A\u5BB9\u5668\u6302\u8F7D\u5171\u4EAB\u76EE\u5F55\u3002</p><p>\u8DE8 mount namespace attach \u6210\u529F\u540E\uFF0C\u76EE\u6807 JVM \u7684 <code>arthas.log</code> \u4F1A\u8BB0\u5F55\u4E0B\u9762\u7684\u7ED3\u6784\u5316\u65E5\u5FD7\u3002</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>event=arthas_attach status=success mode=cross-mount-namespace targetPid=... arthasHome=... network=... telnet=... http=...
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u6267\u884C <code>stop</code> \u4F1A\u505C\u6B62 Arthas\uFF0C\u5E76\u6E05\u7406\u590D\u5236\u5230\u76EE\u6807\u5BB9\u5668\u91CC\u7684\u4E34\u65F6 Arthas Home\u3002<code>quit</code> \u548C <code>exit</code> \u53EA\u65AD\u5F00\u5F53\u524D\u8FDE\u63A5\uFF0C\u4E0D\u4F1A\u505C\u6B62 Arthas \u6216\u6E05\u7406\u8BE5\u76EE\u5F55\u3002</p><p>\u5982\u679C\u4E34\u65F6\u5BB9\u5668\u4E2D\u7684 <code>ps</code> \u770B\u4E0D\u5230\u76EE\u6807 JVM\uFF0C\u8BF4\u660E\u5BB9\u5668\u8FD0\u884C\u65F6\u6CA1\u6709\u6309 <code>--target</code> \u5171\u4EAB\u76EE\u6807\u8FDB\u7A0B\uFF0C\u5F53\u524D\u65B9\u5F0F\u65E0\u6CD5 attach\u3002\u5982\u679C attach \u540E\u7684\u670D\u52A1\u542F\u52A8\u68C0\u67E5\u5931\u8D25\uFF0C\u7EC8\u7AEF\u4F1A\u63D0\u793A\u67E5\u770B\u76EE\u6807 JVM \u7684 <code>arthas.log</code>\uFF0C\u53EF\u4EE5\u4ECE\u4E34\u65F6\u5BB9\u5668\u4E2D\u67E5\u627E\u65E5\u5FD7\u3002</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">find</span> /proc/<span class="token variable">\${TARGET_PID}</span>/root <span class="token parameter variable">-name</span> arthas.log <span class="token operator"><span class="token file-descriptor important">2</span>></span>/dev/null
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="\u4ECE-sidecar-\u5BB9\u5668-attach" tabindex="-1"><a class="header-anchor" href="#\u4ECE-sidecar-\u5BB9\u5668-attach" aria-hidden="true">#</a> \u4ECE sidecar \u5BB9\u5668 attach</h3>`,11),x=s("\u4E5F\u53EF\u4EE5\u628A\u5B8C\u6574 JDK \u548C Arthas \u9884\u88C5\u5728\u5E38\u9A7B sidecar \u5BB9\u5668\u4E2D\uFF0C\u518D\u4ECE sidecar attach \u540C\u4E00\u4E2A Pod \u91CC\u7684\u5E94\u7528 JVM\u3002\u521B\u5EFA Pod \u65F6\u5FC5\u987B\u8BBE\u7F6E "),I={href:"https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/share-process-namespace/",target:"_blank",rel:"noopener noreferrer"},j=a("code",null,"shareProcessNamespace: true",-1),J=s("\uFF0C\u5426\u5219 sidecar \u770B\u4E0D\u5230\u5E94\u7528\u5BB9\u5668\u7684 PID\u3002\u8FD9\u4E2A\u5B57\u6BB5\u53EA\u5171\u4EAB PID namespace\u3002\u4E24\u4E2A\u5BB9\u5668\u4ECD\u4F7F\u7528\u72EC\u7ACB\u7684 mount namespace\uFF0CArthas 4.3.4 \u4F1A\u901A\u8FC7 "),P=a("code",null,"/proc/<pid>/root",-1),R=s(" \u5904\u7406\u6587\u4EF6\u8BBF\u95EE\uFF0C\u4E0D\u9700\u8981\u5171\u4EAB volume\u3002Pod \u5185\u7684\u5BB9\u5668\u5DF2\u7ECF\u5171\u4EAB network namespace\uFF0C\u56E0\u6B64\u4E5F\u4E0D\u9700\u8981 "),E=a("code",null,"NET_ADMIN",-1),V=s("\u3002"),M=t(`<p>\u4F18\u5148\u8BA9 sidecar \u548C\u5E94\u7528 JVM \u4F7F\u7528\u76F8\u540C\u7684 Linux UID \u548C GID\u3002\u666E\u901A JVM\u3001\u9ED8\u8BA4 <code>/proc</code> \u5B89\u5168\u7B56\u7565\u548C\u53EF\u5199\u4E34\u65F6\u76EE\u5F55\u4E0B\uFF0C\u8FD9\u6761\u8DEF\u5F84\u4E0D\u9700\u8981\u589E\u52A0 Linux capability\u3002</p><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code><span class="token key atrule">spec</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">shareProcessNamespace</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>
|
||||
<span class="token key atrule">containers</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> app
|
||||
<span class="token key atrule">securityContext</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">runAsUser</span><span class="token punctuation">:</span> <span class="token number">1000</span>
|
||||
<span class="token key atrule">runAsGroup</span><span class="token punctuation">:</span> <span class="token number">1000</span>
|
||||
<span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> arthas<span class="token punctuation">-</span>sidecar
|
||||
<span class="token key atrule">image</span><span class="token punctuation">:</span> your<span class="token punctuation">-</span>registry/arthas<span class="token punctuation">-</span>sidecar<span class="token punctuation">:</span>4.3.4
|
||||
<span class="token key atrule">securityContext</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">runAsUser</span><span class="token punctuation">:</span> <span class="token number">1000</span>
|
||||
<span class="token key atrule">runAsGroup</span><span class="token punctuation">:</span> <span class="token number">1000</span>
|
||||
<span class="token key atrule">runAsNonRoot</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>
|
||||
<span class="token key atrule">allowPrivilegeEscalation</span><span class="token punctuation">:</span> <span class="token boolean important">false</span>
|
||||
<span class="token key atrule">capabilities</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">drop</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">"ALL"</span><span class="token punctuation">]</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,2),N=s("\u5982\u679C sidecar \u548C\u5E94\u7528 JVM \u7684 UID \u4E0D\u540C\uFF0Csidecar \u5FC5\u987B\u4EE5 UID "),O=a("code",null,"0",-1),S=s(" \u8FD0\u884C\uFF0C\u5E76\u4E14\u76EE\u6807 HotSpot \u5FC5\u987B\u5141\u8BB8 root \u5BA2\u6237\u7AEF\u3002\u8F83\u65B0\u7684 "),H={href:"https://github.com/openjdk/jdk/blob/master/src/hotspot/os/posix/attachListener_posix.cpp#L253-L269",target:"_blank",rel:"noopener noreferrer"},q=s("OpenJDK attach listener"),U=s(" \u63A5\u53D7\u76F8\u540C UID/GID \u6216 UID "),T=a("code",null,"0",-1),L=s("\u3002\u4E0A\u6E38 "),K={href:"https://github.com/openjdk/jdk8u/blob/master/hotspot/src/os/linux/vm/attachListener_linux.cpp#L350-L358",target:"_blank",rel:"noopener noreferrer"},$=s("OpenJDK 8u \u7684\u5B9E\u73B0"),C=s(" \u4ECD\u8981\u6C42 UID/GID \u5B8C\u5168\u4E00\u81F4\uFF0C\u90E8\u5206\u5382\u5546\u6784\u5EFA\u4E5F\u53EF\u80FD\u6709\u4E0D\u540C\u7B56\u7565\u3002\u8FD9\u4E2A\u6821\u9A8C\u53D1\u751F\u5728\u76EE\u6807 JVM \u5185\u90E8\uFF0C\u589E\u52A0 Linux capability \u65E0\u6CD5\u7ED5\u8FC7\u3002\u76EE\u6807 JVM \u4F7F\u7528\u8FD9\u7C7B\u5B9E\u73B0\u65F6\uFF0C\u53EA\u80FD\u91C7\u7528\u76F8\u540C UID/GID \u7684\u914D\u7F6E\u3002"),G=t(`<p>\u76EE\u6807 HotSpot \u652F\u6301 root \u5BA2\u6237\u7AEF\u65F6\uFF0C\u4E3A\u4E86\u8986\u76D6\u9996\u6B21 attach\u3001\u4E0D\u540C\u6743\u9650\u7684\u4E34\u65F6\u76EE\u5F55\u548C <code>stop</code> \u6E05\u7406\uFF0C\u5EFA\u8BAE\u663E\u5F0F\u4FDD\u7559\u4E0B\u9762\u56DB\u9879 capability\u3002</p><table><thead><tr><th>\u914D\u7F6E\u6216 capability</th><th>\u7528\u9014</th></tr></thead><tbody><tr><td><code>shareProcessNamespace: true</code></td><td>\u8BA9 sidecar \u80FD\u770B\u5230\u5E94\u7528 JVM \u7684 PID \u548C <code>/proc/<pid></code></td></tr><tr><td><code>runAsUser: 0</code></td><td>\u5728\u76EE\u6807 HotSpot \u652F\u6301 root \u5BA2\u6237\u7AEF\u65F6\u901A\u8FC7\u8DE8 UID \u6821\u9A8C</td></tr><tr><td><code>SYS_PTRACE</code></td><td>\u901A\u8FC7 ptrace access check \u8BFB\u53D6 <code>/proc/<pid></code>\uFF0C\u5E76\u8BBF\u95EE <code>/proc/<pid>/root</code> \u548C mount namespace \u4FE1\u606F</td></tr><tr><td><code>KILL</code></td><td>UID \u4E0D\u540C\u65F6\u5411\u5C1A\u672A\u542F\u52A8 attach listener \u7684 JVM \u53D1\u9001 <code>SIGQUIT</code></td></tr><tr><td><code>DAC_OVERRIDE</code></td><td>\u8FDE\u63A5\u76EE\u6807\u7528\u6237\u62E5\u6709\u7684 <code>0600</code> attach socket\uFF0C\u5E76\u5199\u5165\u76EE\u6807\u5BB9\u5668\u7684\u4E34\u65F6\u76EE\u5F55</td></tr><tr><td><code>CHOWN</code></td><td>\u628A\u590D\u5236\u5230\u76EE\u6807\u5BB9\u5668\u7684 Arthas Home \u4EA4\u7ED9\u76EE\u6807\u7528\u6237\uFF0C\u4F7F <code>stop</code> \u53EF\u4EE5\u6E05\u7406\u8BE5\u76EE\u5F55</td></tr></tbody></table><p>\u4E0B\u9762\u662F\u8DE8 UID \u573A\u666F\u7684 <code>securityContext</code> \u7247\u6BB5\u3002\u5B83\u4E0D\u9700\u8981 <code>privileged: true</code>\u3001<code>SYS_ADMIN</code>\u3001<code>hostPID</code> \u6216 <code>hostPath</code>\u3002</p><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code><span class="token key atrule">spec</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">shareProcessNamespace</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>
|
||||
<span class="token key atrule">containers</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> arthas<span class="token punctuation">-</span>sidecar
|
||||
<span class="token key atrule">image</span><span class="token punctuation">:</span> your<span class="token punctuation">-</span>registry/arthas<span class="token punctuation">-</span>sidecar<span class="token punctuation">:</span>4.3.4
|
||||
<span class="token key atrule">securityContext</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">runAsUser</span><span class="token punctuation">:</span> <span class="token number">0</span>
|
||||
<span class="token key atrule">runAsGroup</span><span class="token punctuation">:</span> <span class="token number">0</span>
|
||||
<span class="token key atrule">allowPrivilegeEscalation</span><span class="token punctuation">:</span> <span class="token boolean important">false</span>
|
||||
<span class="token key atrule">seccompProfile</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">type</span><span class="token punctuation">:</span> RuntimeDefault
|
||||
<span class="token key atrule">capabilities</span><span class="token punctuation">:</span>
|
||||
<span class="token key atrule">drop</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">"ALL"</span><span class="token punctuation">]</span>
|
||||
<span class="token key atrule">add</span><span class="token punctuation">:</span>
|
||||
<span class="token punctuation">-</span> SYS_PTRACE
|
||||
<span class="token punctuation">-</span> KILL
|
||||
<span class="token punctuation">-</span> DAC_OVERRIDE
|
||||
<span class="token punctuation">-</span> CHOWN
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u5BB9\u5668\u8FD0\u884C\u65F6\u7684\u9ED8\u8BA4 capability \u96C6\u5408\u901A\u5E38\u5DF2\u7ECF\u5305\u542B <code>KILL</code>\u3001<code>DAC_OVERRIDE</code> \u548C <code>CHOWN</code>\uFF0C\u6240\u4EE5\u4FDD\u7559\u9ED8\u8BA4\u96C6\u5408\u65F6\u5F80\u5F80\u53EA\u9700\u8981\u989D\u5916\u6DFB\u52A0 <code>SYS_PTRACE</code>\u3002\u4E0A\u9762\u7684\u5199\u6CD5\u5148 drop <code>ALL</code> \u518D\u9010\u9879\u6DFB\u52A0\uFF0C\u7ED3\u679C\u4E0D\u4F9D\u8D56\u8FD0\u884C\u65F6\u9ED8\u8BA4\u503C\u3002</p>`,5),w={class:"custom-container warning"},z=a("p",{class:"custom-container-title"},"\u6CE8\u610F",-1),F=s("Kubernetes \u7684 "),Y={href:"https://kubernetes.io/zh-cn/docs/concepts/security/pod-security-standards/",target:"_blank",rel:"noopener noreferrer"},B=s("Baseline \u548C Restricted Pod Security Standards"),W=s(" \u90FD\u4E0D\u5141\u8BB8\u589E\u52A0 "),X=a("code",null,"SYS_PTRACE",-1),Q=s("\uFF0CRestricted \u8FD8\u7981\u6B62 UID "),Z=a("code",null,"0",-1),aa=s("\u3002\u4F7F\u7528\u8DE8 UID \u914D\u7F6E\u65F6\uFF0C\u9700\u8981\u7531\u96C6\u7FA4\u7BA1\u7406\u5458\u4E3A\u8FD9\u4E2A\u53D7\u4FE1\u4EFB\u7684\u5DE5\u4F5C\u8D1F\u8F7D\u63D0\u4F9B\u4F8B\u5916\u6216\u4E13\u7528 namespace\u3002\u5171\u4EAB PID namespace \u4E5F\u4F1A\u8BA9 sidecar \u770B\u5230\u540C\u4E00 Pod \u5185\u5176\u4ED6\u8FDB\u7A0B\u7684\u53C2\u6570\u3001\u73AF\u5883\u53D8\u91CF\u548C "),sa=a("code",null,"/proc/<pid>/root",-1),na=s("\uFF0C\u4E0D\u8981\u628A\u8FD9\u4E2A sidecar \u5F00\u653E\u7ED9\u4E0D\u53D7\u4FE1\u4EFB\u7684\u7528\u6237\u3002"),ea=t(`<p>Arthas attach \u672C\u8EAB\u4E0D\u8C03\u7528 Kubernetes API\uFF0C\u56E0\u6B64 sidecar \u7684 ServiceAccount \u4E0D\u9700\u8981\u989D\u5916 RBAC \u6743\u9650\u3002\u901A\u8FC7 <code>kubectl exec</code> \u8FDB\u5165 sidecar \u7684\u64CD\u4F5C\u4EBA\u5458\u4ECD\u9700\u5BF9\u5E94\u7684 <code>pods/exec</code> \u6743\u9650\u3002</p><p>sidecar \u955C\u50CF\u9700\u8981\u5305\u542B\u5B8C\u6574 JDK \u548C Arthas 4.3.4 \u6216\u66F4\u9AD8\u7248\u672C\u3002\u542F\u7528\u5171\u4EAB PID namespace \u540E\uFF0C\u5E94\u7528\u8FDB\u7A0B\u901A\u5E38\u4E0D\u518D\u662F PID <code>1</code>\uFF0C\u8BF7\u5148\u7528 <code>ps</code> \u67E5\u627E\u5B9E\u9645 PID\u3002</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>kubectl <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> <span class="token variable">\${pod}</span> <span class="token parameter variable">--container</span> arthas-sidecar -- <span class="token function">sh</span>
|
||||
|
||||
<span class="token function">ps</span> <span class="token parameter variable">-ef</span>
|
||||
<span class="token assign-left variable">TARGET_PID</span><span class="token operator">=</span><span class="token operator"><</span>java-pid<span class="token operator">></span>
|
||||
<span class="token function">java</span> <span class="token parameter variable">-jar</span> /opt/arthas/arthas-boot.jar <span class="token string">"<span class="token variable">\${TARGET_PID}</span>"</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u5982\u679C\u76F8\u540C UID/GID \u7684\u914D\u7F6E\u4ECD\u7136\u65E0\u6CD5 attach\uFF0C\u68C0\u67E5\u76EE\u6807 JVM \u662F\u5426\u8BBE\u7F6E\u4E86 <code>-XX:+DisableAttachMechanism</code>\uFF0C\u4EE5\u53CA seccomp\u3001AppArmor\u3001SELinux \u6216 <code>/proc</code> \u6302\u8F7D\u7B56\u7565\u662F\u5426\u963B\u6B62\u4E86\u8FDB\u7A0B\u8BBF\u95EE\u3002\u76EE\u6807 JVM \u4F7F\u7528\u81EA\u5B9A\u4E49 <code>java.io.tmpdir</code> \u65F6\uFF0C\u8BE5\u76EE\u5F55\u4E5F\u5FC5\u987B\u5141\u8BB8 attach \u5BA2\u6237\u7AEF\u5199\u5165\u3002</p><h2 id="\u628A-arthas-\u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC" tabindex="-1"><a class="header-anchor" href="#\u628A-arthas-\u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC" aria-hidden="true">#</a> \u628A Arthas \u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC</h2><p>\u53EF\u4EE5\u5F88\u7B80\u5355\u628A Arthas \u5B89\u88C5\u5230\u4F60\u7684 Docker \u955C\u50CF\u91CC\u3002</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>FROM openjdk:8-jdk-alpine
|
||||
|
||||
# copy arthas
|
||||
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u5982\u679C\u60F3\u6307\u5B9A\u7248\u672C\uFF0C\u53EF\u4EE5\u67E5\u770B\u5177\u4F53\u7684 tags\uFF1A</p>`,8),ta={href:"https://hub.docker.com/r/hengyunabc/arthas/tags",target:"_blank",rel:"noopener noreferrer"},oa=s("https://hub.docker.com/r/hengyunabc/arthas/tags");function ca(pa,ia){const n=i("ExternalLinkIcon");return c(),p("div",null,[r,a("p",null,[d,a("a",u,[k,e(n)]),v,m,b]),h,a("p",null,[g,_,a("a",f,[A,e(n)]),y]),D,a("p",null,[x,a("a",I,[j,e(n)]),J,P,R,E,V]),M,a("p",null,[N,O,S,a("a",H,[q,e(n)]),U,T,L,a("a",K,[$,e(n)]),C]),G,a("div",w,[z,a("p",null,[F,a("a",Y,[B,e(n)]),W,X,Q,Z,aa,sa,na])]),ea,a("p",null,[a("a",ta,[oa,e(n)])])])}const ra=o(l,[["render",ca],["__file","docker.html.vue"]]);export{ra as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-2116d2e1","path":"/doc/download.html","title":"\u4E0B\u8F7D","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4E0B\u8F7D\u5168\u91CF\u5305","slug":"\u4E0B\u8F7D\u5168\u91CF\u5305","link":"#\u4E0B\u8F7D\u5168\u91CF\u5305","children":[{"level":3,"title":"\u4ECE Maven \u4ED3\u5E93\u4E0B\u8F7D","slug":"\u4ECE-maven-\u4ED3\u5E93\u4E0B\u8F7D","link":"#\u4ECE-maven-\u4ED3\u5E93\u4E0B\u8F7D","children":[]},{"level":3,"title":"\u4ECE Github Releases \u9875\u4E0B\u8F7D","slug":"\u4ECE-github-releases-\u9875\u4E0B\u8F7D","link":"#\u4ECE-github-releases-\u9875\u4E0B\u8F7D","children":[]},{"level":3,"title":"\u7528 as.sh \u542F\u52A8","slug":"\u7528-as-sh-\u542F\u52A8","link":"#\u7528-as-sh-\u542F\u52A8","children":[]},{"level":3,"title":"\u7528 arthas-boot \u542F\u52A8","slug":"\u7528-arthas-boot-\u542F\u52A8","link":"#\u7528-arthas-boot-\u542F\u52A8","children":[]}]},{"level":2,"title":"\u4E0B\u8F7D\u79BB\u7EBF\u6587\u6863","slug":"\u4E0B\u8F7D\u79BB\u7EBF\u6587\u6863","link":"#\u4E0B\u8F7D\u79BB\u7EBF\u6587\u6863","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/download.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-2116d2e1","path":"/doc/download.html","title":"\u4E0B\u8F7D","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4E0B\u8F7D\u5168\u91CF\u5305","slug":"\u4E0B\u8F7D\u5168\u91CF\u5305","link":"#\u4E0B\u8F7D\u5168\u91CF\u5305","children":[{"level":3,"title":"\u4ECE Maven \u4ED3\u5E93\u4E0B\u8F7D","slug":"\u4ECE-maven-\u4ED3\u5E93\u4E0B\u8F7D","link":"#\u4ECE-maven-\u4ED3\u5E93\u4E0B\u8F7D","children":[]},{"level":3,"title":"\u4ECE Github Releases \u9875\u4E0B\u8F7D","slug":"\u4ECE-github-releases-\u9875\u4E0B\u8F7D","link":"#\u4ECE-github-releases-\u9875\u4E0B\u8F7D","children":[]},{"level":3,"title":"\u7528 as.sh \u542F\u52A8","slug":"\u7528-as-sh-\u542F\u52A8","link":"#\u7528-as-sh-\u542F\u52A8","children":[]},{"level":3,"title":"\u7528 arthas-boot \u542F\u52A8","slug":"\u7528-arthas-boot-\u542F\u52A8","link":"#\u7528-arthas-boot-\u542F\u52A8","children":[]}]},{"level":2,"title":"\u4E0B\u8F7D\u79BB\u7EBF\u6587\u6863","slug":"\u4E0B\u8F7D\u79BB\u7EBF\u6587\u6863","link":"#\u4E0B\u8F7D\u79BB\u7EBF\u6587\u6863","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/download.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as t,o as r,c as d,a,b as s,d as o,e,r as i}from"./app.524ecf5c.js";const l={},c=o('<h1 id="download" tabindex="-1"><a class="header-anchor" href="#download" aria-hidden="true">#</a> Download</h1><h2 id="download-full-package" tabindex="-1"><a class="header-anchor" href="#download-full-package" aria-hidden="true">#</a> Download full package</h2><h3 id="download-from-maven-central" tabindex="-1"><a class="header-anchor" href="#download-from-maven-central" aria-hidden="true">#</a> Download from maven central</h3>',3),h=e("Latest Version, Click To Download: "),u={href:"https://arthas.aliyun.com/download/latest_version",target:"_blank",rel:"noopener noreferrer"},p=a("img",{src:"https://img.shields.io/maven-central/v/com.taobao.arthas/arthas-packaging.svg?style=flat-square",alt:"",title:"Arthas"},null,-1),m=a("h3",{id:"download-from-github-releases",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#download-from-github-releases","aria-hidden":"true"},"#"),e(" Download from Github Releases")],-1),_={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},b=e("https://github.com/alibaba/arthas/releases"),v=o(`<h3 id="use-as-sh" tabindex="-1"><a class="header-anchor" href="#use-as-sh" aria-hidden="true">#</a> Use as.sh</h3><p>Download and unzip, find <code>as.sh</code> in the directory. Start it in bash:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>./as.sh
|
||||
import{_ as t,o as r,c as d,a,b as s,d as o,e,r as i}from"./app.e2427bec.js";const l={},c=o('<h1 id="download" tabindex="-1"><a class="header-anchor" href="#download" aria-hidden="true">#</a> Download</h1><h2 id="download-full-package" tabindex="-1"><a class="header-anchor" href="#download-full-package" aria-hidden="true">#</a> Download full package</h2><h3 id="download-from-maven-central" tabindex="-1"><a class="header-anchor" href="#download-from-maven-central" aria-hidden="true">#</a> Download from maven central</h3>',3),h=e("Latest Version, Click To Download: "),u={href:"https://arthas.aliyun.com/download/latest_version",target:"_blank",rel:"noopener noreferrer"},p=a("img",{src:"https://img.shields.io/maven-central/v/com.taobao.arthas/arthas-packaging.svg?style=flat-square",alt:"",title:"Arthas"},null,-1),m=a("h3",{id:"download-from-github-releases",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#download-from-github-releases","aria-hidden":"true"},"#"),e(" Download from Github Releases")],-1),_={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},b=e("https://github.com/alibaba/arthas/releases"),v=o(`<h3 id="use-as-sh" tabindex="-1"><a class="header-anchor" href="#use-as-sh" aria-hidden="true">#</a> Use as.sh</h3><p>Download and unzip, find <code>as.sh</code> in the directory. Start it in bash:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>./as.sh
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Print usage:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>./as.sh <span class="token parameter variable">-h</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="use-arthas-boot-jar" tabindex="-1"><a class="header-anchor" href="#use-arthas-boot-jar" aria-hidden="true">#</a> Use arthas-boot.jar</h3><p>Download and unzip, find <code>arthas-boot.jar</code> in the directory. Start with <code>java</code> command:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">java</span> <span class="token parameter variable">-jar</span> arthas-boot.jar
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Print usage:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">java</span> <span class="token parameter variable">-jar</span> arthas-boot.jar <span class="token parameter variable">-h</span>
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as t,o,c as i,a,b as n,d as r,e,r as d}from"./app.524ecf5c.js";const h={},l=r('<h1 id="\u4E0B\u8F7D" tabindex="-1"><a class="header-anchor" href="#\u4E0B\u8F7D" aria-hidden="true">#</a> \u4E0B\u8F7D</h1><h2 id="\u4E0B\u8F7D\u5168\u91CF\u5305" tabindex="-1"><a class="header-anchor" href="#\u4E0B\u8F7D\u5168\u91CF\u5305" aria-hidden="true">#</a> \u4E0B\u8F7D\u5168\u91CF\u5305</h2><h3 id="\u4ECE-maven-\u4ED3\u5E93\u4E0B\u8F7D" tabindex="-1"><a class="header-anchor" href="#\u4ECE-maven-\u4ED3\u5E93\u4E0B\u8F7D" aria-hidden="true">#</a> \u4ECE Maven \u4ED3\u5E93\u4E0B\u8F7D</h3>',3),c=e("\u6700\u65B0\u7248\u672C\uFF0C\u70B9\u51FB\u4E0B\u8F7D\uFF1A"),u={href:"https://arthas.aliyun.com/download/latest_version?mirror=aliyun",target:"_blank",rel:"noopener noreferrer"},p=a("img",{src:"https://img.shields.io/maven-central/v/com.taobao.arthas/arthas-packaging.svg?style=flat-square",alt:"",title:"Arthas"},null,-1),_=a("h3",{id:"\u4ECE-github-releases-\u9875\u4E0B\u8F7D",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u4ECE-github-releases-\u9875\u4E0B\u8F7D","aria-hidden":"true"},"#"),e(" \u4ECE Github Releases \u9875\u4E0B\u8F7D")],-1),b={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},m=e("https://github.com/alibaba/arthas/releases"),v=r(`<h3 id="\u7528-as-sh-\u542F\u52A8" tabindex="-1"><a class="header-anchor" href="#\u7528-as-sh-\u542F\u52A8" aria-hidden="true">#</a> \u7528 as.sh \u542F\u52A8</h3><p>\u89E3\u538B\u540E\uFF0C\u5728\u6587\u4EF6\u5939\u91CC\u6709<code>as.sh</code>\uFF0C\u76F4\u63A5\u7528<code>./as.sh</code>\u7684\u65B9\u5F0F\u542F\u52A8\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>./as.sh
|
||||
import{_ as t,o,c as i,a,b as n,d as r,e,r as d}from"./app.e2427bec.js";const h={},l=r('<h1 id="\u4E0B\u8F7D" tabindex="-1"><a class="header-anchor" href="#\u4E0B\u8F7D" aria-hidden="true">#</a> \u4E0B\u8F7D</h1><h2 id="\u4E0B\u8F7D\u5168\u91CF\u5305" tabindex="-1"><a class="header-anchor" href="#\u4E0B\u8F7D\u5168\u91CF\u5305" aria-hidden="true">#</a> \u4E0B\u8F7D\u5168\u91CF\u5305</h2><h3 id="\u4ECE-maven-\u4ED3\u5E93\u4E0B\u8F7D" tabindex="-1"><a class="header-anchor" href="#\u4ECE-maven-\u4ED3\u5E93\u4E0B\u8F7D" aria-hidden="true">#</a> \u4ECE Maven \u4ED3\u5E93\u4E0B\u8F7D</h3>',3),c=e("\u6700\u65B0\u7248\u672C\uFF0C\u70B9\u51FB\u4E0B\u8F7D\uFF1A"),u={href:"https://arthas.aliyun.com/download/latest_version?mirror=aliyun",target:"_blank",rel:"noopener noreferrer"},p=a("img",{src:"https://img.shields.io/maven-central/v/com.taobao.arthas/arthas-packaging.svg?style=flat-square",alt:"",title:"Arthas"},null,-1),_=a("h3",{id:"\u4ECE-github-releases-\u9875\u4E0B\u8F7D",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u4ECE-github-releases-\u9875\u4E0B\u8F7D","aria-hidden":"true"},"#"),e(" \u4ECE Github Releases \u9875\u4E0B\u8F7D")],-1),b={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},m=e("https://github.com/alibaba/arthas/releases"),v=r(`<h3 id="\u7528-as-sh-\u542F\u52A8" tabindex="-1"><a class="header-anchor" href="#\u7528-as-sh-\u542F\u52A8" aria-hidden="true">#</a> \u7528 as.sh \u542F\u52A8</h3><p>\u89E3\u538B\u540E\uFF0C\u5728\u6587\u4EF6\u5939\u91CC\u6709<code>as.sh</code>\uFF0C\u76F4\u63A5\u7528<code>./as.sh</code>\u7684\u65B9\u5F0F\u542F\u52A8\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>./as.sh
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u6253\u5370\u5E2E\u52A9\u4FE1\u606F\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>./as.sh <span class="token parameter variable">-h</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="\u7528-arthas-boot-\u542F\u52A8" tabindex="-1"><a class="header-anchor" href="#\u7528-arthas-boot-\u542F\u52A8" aria-hidden="true">#</a> \u7528 arthas-boot \u542F\u52A8</h3><p>\u6216\u8005\u5728\u89E3\u538B\u540E\uFF0C\u5728\u6587\u4EF6\u5939\u91CC\u6709<code>arthas-boot.jar</code>\uFF0C\u76F4\u63A5\u7528<code>java -jar</code>\u7684\u65B9\u5F0F\u542F\u52A8\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">java</span> <span class="token parameter variable">-jar</span> arthas-boot.jar
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u6253\u5370\u5E2E\u52A9\u4FE1\u606F\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">java</span> <span class="token parameter variable">-jar</span> arthas-boot.jar <span class="token parameter variable">-h</span>
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-8d912d66","path":"/en/doc/download.html","title":"Download","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Download full package","slug":"download-full-package","link":"#download-full-package","children":[{"level":3,"title":"Download from maven central","slug":"download-from-maven-central","link":"#download-from-maven-central","children":[]},{"level":3,"title":"Download from Github Releases","slug":"download-from-github-releases","link":"#download-from-github-releases","children":[]},{"level":3,"title":"Use as.sh","slug":"use-as-sh","link":"#use-as-sh","children":[]},{"level":3,"title":"Use arthas-boot.jar","slug":"use-arthas-boot-jar","link":"#use-arthas-boot-jar","children":[]}]},{"level":2,"title":"Download Offline Help Documentation","slug":"download-offline-help-documentation","link":"#download-offline-help-documentation","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/download.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-8d912d66","path":"/en/doc/download.html","title":"Download","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Download full package","slug":"download-full-package","link":"#download-full-package","children":[{"level":3,"title":"Download from maven central","slug":"download-from-maven-central","link":"#download-from-maven-central","children":[]},{"level":3,"title":"Download from Github Releases","slug":"download-from-github-releases","link":"#download-from-github-releases","children":[]},{"level":3,"title":"Use as.sh","slug":"use-as-sh","link":"#use-as-sh","children":[]},{"level":3,"title":"Use arthas-boot.jar","slug":"use-arthas-boot-jar","link":"#use-arthas-boot-jar","children":[]}]},{"level":2,"title":"Download Offline Help Documentation","slug":"download-offline-help-documentation","link":"#download-offline-help-documentation","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/download.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-1fe4a616","path":"/doc/dump.html","title":"dump","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/dump.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-1fe4a616","path":"/doc/dump.html","title":"dump","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/dump.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-471b4d3e","path":"/en/doc/dump.html","title":"dump","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/dump.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-471b4d3e","path":"/en/doc/dump.html","title":"dump","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/dump.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as c,o,c as d,a as e,b as a,w as t,e as s,d as r,r as l}from"./app.524ecf5c.js";const u={},p=e("h1",{id:"dump",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dump","aria-hidden":"true"},"#"),s(" dump")],-1),h={href:"https://arthas.aliyun.com/doc/arthas-tutorials?language=en&id=command-dump",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"dump",-1),v=s(" online tutorial"),b=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,"Dump the bytecode for the particular classes to the specified directory.")],-1),g=s("The dump command is used to dump the bytecode of classes actually running in the JVM to a specified directory. It is suitable for bulk downloading the bytecode of classes in a specific package directory. If you need to decompile a single class or view class information in real-time, you can refer to "),_=s("jad"),f=s("."),k=e("h2",{id:"options",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#options","aria-hidden":"true"},"#"),s(" Options")],-1),L=e("thead",null,[e("tr",null,[e("th",{style:{"text-align":"right"}},"Name"),e("th",{style:{"text-align":"left"}},"Specification")])],-1),y=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("em",null,"class-pattern")]),e("td",{style:{"text-align":"left"}},"class name pattern")],-1),x=e("td",{style:{"text-align":"right"}},[e("code",null,"[c:]")],-1),C={style:{"text-align":"left"}},A=s("hashcode of the "),S=s("class loader"),w=s(" that loaded the target class"),O=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("code",null,"[classLoaderClass:]")]),e("td",{style:{"text-align":"left"}},"The class name of the ClassLoader that executes the expression.")],-1),E=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("code",null,"[d:]")]),e("td",{style:{"text-align":"left"}},"set the destination directory for class files")],-1),$=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("code",null,"[E]")]),e("td",{style:{"text-align":"left"}},"turn on regex match, the default behavior is wild card match")],-1),j=r(`<h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ dump java.lang.String
|
||||
import{_ as l,o as i,c,a as e,b as n,w as t,e as s,d,r as o}from"./app.e2427bec.js";const r={},u=e("h1",{id:"dump",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dump","aria-hidden":"true"},"#"),s(" dump")],-1),p=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,"Dump the bytecode for the particular classes to the specified directory.")],-1),h=s("The dump command is used to dump the bytecode of classes actually running in the JVM to a specified directory. It is suitable for bulk downloading the bytecode of classes in a specific package directory. If you need to decompile a single class or view class information in real-time, you can refer to "),m=s("jad"),v=s("."),b=e("h2",{id:"options",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#options","aria-hidden":"true"},"#"),s(" Options")],-1),g=e("thead",null,[e("tr",null,[e("th",{style:{"text-align":"right"}},"Name"),e("th",{style:{"text-align":"left"}},"Specification")])],-1),f=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("em",null,"class-pattern")]),e("td",{style:{"text-align":"left"}},"class name pattern")],-1),_=e("td",{style:{"text-align":"right"}},[e("code",null,"[c:]")],-1),k={style:{"text-align":"left"}},L=s("hashcode of the "),y=s("class loader"),C=s(" that loaded the target class"),x=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("code",null,"[classLoaderClass:]")]),e("td",{style:{"text-align":"left"}},"The class name of the ClassLoader that executes the expression.")],-1),A=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("code",null,"[d:]")]),e("td",{style:{"text-align":"left"}},"set the destination directory for class files")],-1),S=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("code",null,"[E]")]),e("td",{style:{"text-align":"left"}},"turn on regex match, the default behavior is wild card match")],-1),w=d(`<h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ dump java.lang.String
|
||||
HASHCODE CLASSLOADER LOCATION
|
||||
null /Users/admin/logs/arthas/classdump/java/lang/String.class
|
||||
Affect<span class="token punctuation">(</span>row-cnt:1<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">119</span> ms.
|
||||
@@ -17,4 +17,4 @@ Affect<span class="token punctuation">(</span>row-cnt:1<span class="token punctu
|
||||
3d4eac69 +-sun.misc.Launcher<span class="token variable">$AppClassLoader</span>@3d4eac69 /Users/admin/logs/arthas/classdump/sun.misc.Launcher<span class="token variable">$AppClassLoader</span>-3d4eac69/demo/MathGame.class
|
||||
+-sun.misc.Launcher<span class="token variable">$ExtClassLoader</span>@66350f69
|
||||
Affect<span class="token punctuation">(</span>row-cnt:1<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">39</span> ms.
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>PS: Here the classLoaderClass in java 8 is sun.misc.Launcher$AppClassLoader, while in java 11 it's jdk.internal.loader.ClassLoaders$AppClassLoader. Currently killercoda using java 11.</li></ul><p>The value of <code>--classloaderclass</code> is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, <code>-c <hashcode></code> is dynamic.</p>`,12);function H(I,N){const i=l("ExternalLinkIcon"),n=l("RouterLink");return o(),d("div",null,[p,e("p",null,[e("a",h,[m,v,a(i)])]),b,e("p",null,[g,a(n,{to:"/en/doc/jad.html"},{default:t(()=>[_]),_:1}),f]),k,e("table",null,[L,e("tbody",null,[y,e("tr",null,[x,e("td",C,[A,a(n,{to:"/en/doc/classloader.html"},{default:t(()=>[S]),_:1}),w])]),O,E,$])]),j])}const D=c(u,[["render",H],["__file","dump.html.vue"]]);export{D as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>PS: Here the classLoaderClass in java 8 is sun.misc.Launcher$AppClassLoader, while in java 11 it's jdk.internal.loader.ClassLoaders$AppClassLoader. Currently killercoda using java 11.</li></ul><p>The value of <code>--classloaderclass</code> is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, <code>-c <hashcode></code> is dynamic.</p>`,12);function O($,E){const a=o("RouterLink");return i(),c("div",null,[u,p,e("p",null,[h,n(a,{to:"/en/doc/jad.html"},{default:t(()=>[m]),_:1}),v]),b,e("table",null,[g,e("tbody",null,[f,e("tr",null,[_,e("td",k,[L,n(a,{to:"/en/doc/classloader.html"},{default:t(()=>[y]),_:1}),C])]),x,A,S])]),w])}const H=l(r,[["render",O],["__file","dump.html.vue"]]);export{H as default};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as d,o as c,c as i,a,b as e,w as r,e as s,d as o,r as n}from"./app.524ecf5c.js";const p={},u=a("h1",{id:"dump",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#dump","aria-hidden":"true"},"#"),s(" dump")],-1),m={href:"https://arthas.aliyun.com/doc/arthas-tutorials?language=cn&id=command-dump",target:"_blank",rel:"noopener noreferrer"},h=a("code",null,"dump",-1),v=s("\u5728\u7EBF\u6559\u7A0B"),b=a("div",{class:"custom-container tip"},[a("p",{class:"custom-container-title"},"\u63D0\u793A"),a("p",null,"dump \u5DF2\u52A0\u8F7D\u7C7B\u7684 bytecode \u5230\u7279\u5B9A\u76EE\u5F55")],-1),g=s("dump \u547D\u4EE4\u5C06 JVM \u4E2D\u5B9E\u9645\u8FD0\u884C\u7684 class \u7684 byte code dump \u5230\u6307\u5B9A\u76EE\u5F55\uFF0C\u9002\u7528\u573A\u666F\u6279\u91CF\u4E0B\u8F7D\u6307\u5B9A\u5305\u76EE\u5F55\u7684 class \u5B57\u8282\u7801\uFF1B\u5982\u9700\u53CD\u7F16\u8BD1\u5355\u4E00\u7C7B\u3001\u5B9E\u65F6\u67E5\u770B\u7C7B\u4FE1\u606F\uFF0C\u53EF\u53C2\u8003 "),L=s("jad"),k=s("\u3002"),C=o(`<h2 id="\u53C2\u6570\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#\u53C2\u6570\u8BF4\u660E" aria-hidden="true">#</a> \u53C2\u6570\u8BF4\u660E</h2><table><thead><tr><th style="text-align:right;">\u53C2\u6570\u540D\u79F0</th><th style="text-align:left;">\u53C2\u6570\u8BF4\u660E</th></tr></thead><tbody><tr><td style="text-align:right;"><em>class-pattern</em></td><td style="text-align:left;">\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D</td></tr><tr><td style="text-align:right;"><code>[c:]</code></td><td style="text-align:left;">\u7C7B\u6240\u5C5E ClassLoader \u7684 hashcode</td></tr><tr><td style="text-align:right;"><code>[classLoaderClass:]</code></td><td style="text-align:left;">\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name</td></tr><tr><td style="text-align:right;"><code>[d:]</code></td><td style="text-align:left;">\u8BBE\u7F6E\u7C7B\u6587\u4EF6\u7684\u76EE\u6807\u76EE\u5F55</td></tr><tr><td style="text-align:right;">[E]</td><td style="text-align:left;">\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D</td></tr></tbody></table><h2 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ dump java.lang.String
|
||||
import{_ as n,o as t,c as d,a,b as l,w as c,e as s,d as i,r}from"./app.e2427bec.js";const o={},p=a("h1",{id:"dump",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#dump","aria-hidden":"true"},"#"),s(" dump")],-1),u=a("div",{class:"custom-container tip"},[a("p",{class:"custom-container-title"},"\u63D0\u793A"),a("p",null,"dump \u5DF2\u52A0\u8F7D\u7C7B\u7684 bytecode \u5230\u7279\u5B9A\u76EE\u5F55")],-1),m=s("dump \u547D\u4EE4\u5C06 JVM \u4E2D\u5B9E\u9645\u8FD0\u884C\u7684 class \u7684 byte code dump \u5230\u6307\u5B9A\u76EE\u5F55\uFF0C\u9002\u7528\u573A\u666F\u6279\u91CF\u4E0B\u8F7D\u6307\u5B9A\u5305\u76EE\u5F55\u7684 class \u5B57\u8282\u7801\uFF1B\u5982\u9700\u53CD\u7F16\u8BD1\u5355\u4E00\u7C7B\u3001\u5B9E\u65F6\u67E5\u770B\u7C7B\u4FE1\u606F\uFF0C\u53EF\u53C2\u8003 "),h=s("jad"),v=s("\u3002"),b=i(`<h2 id="\u53C2\u6570\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#\u53C2\u6570\u8BF4\u660E" aria-hidden="true">#</a> \u53C2\u6570\u8BF4\u660E</h2><table><thead><tr><th style="text-align:right;">\u53C2\u6570\u540D\u79F0</th><th style="text-align:left;">\u53C2\u6570\u8BF4\u660E</th></tr></thead><tbody><tr><td style="text-align:right;"><em>class-pattern</em></td><td style="text-align:left;">\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D</td></tr><tr><td style="text-align:right;"><code>[c:]</code></td><td style="text-align:left;">\u7C7B\u6240\u5C5E ClassLoader \u7684 hashcode</td></tr><tr><td style="text-align:right;"><code>[classLoaderClass:]</code></td><td style="text-align:left;">\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name</td></tr><tr><td style="text-align:right;"><code>[d:]</code></td><td style="text-align:left;">\u8BBE\u7F6E\u7C7B\u6587\u4EF6\u7684\u76EE\u6807\u76EE\u5F55</td></tr><tr><td style="text-align:right;">[E]</td><td style="text-align:left;">\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D</td></tr></tbody></table><h2 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ dump java.lang.String
|
||||
HASHCODE CLASSLOADER LOCATION
|
||||
null /Users/admin/logs/arthas/classdump/java/lang/String.class
|
||||
Affect<span class="token punctuation">(</span>row-cnt:1<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">119</span> ms.
|
||||
@@ -17,4 +17,4 @@ Affect<span class="token punctuation">(</span>row-cnt:1<span class="token punctu
|
||||
3d4eac69 +-sun.misc.Launcher<span class="token variable">$AppClassLoader</span>@3d4eac69 /Users/admin/logs/arthas/classdump/sun.misc.Launcher<span class="token variable">$AppClassLoader</span>-3d4eac69/demo/MathGame.class
|
||||
+-sun.misc.Launcher<span class="token variable">$ExtClassLoader</span>@66350f69
|
||||
Affect<span class="token punctuation">(</span>row-cnt:1<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">39</span> ms.
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>\u6CE8\uFF1A\u8FD9\u91CC classLoaderClass \u5728 java 8 \u662F sun.misc.Launcher$AppClassLoader\uFF0C\u800C java 11 \u7684 classloader \u662F jdk.internal.loader.ClassLoaders$AppClassLoader\uFF0Ckillercoda \u76EE\u524D\u73AF\u5883\u662F java11\u3002</li></ul><p><code>--classLoaderClass</code> \u7684\u503C\u662F ClassLoader \u7684\u7C7B\u540D\uFF0C\u53EA\u6709\u5339\u914D\u5230\u552F\u4E00\u7684 ClassLoader \u5B9E\u4F8B\u65F6\u624D\u80FD\u5DE5\u4F5C\uFF0C\u76EE\u7684\u662F\u65B9\u4FBF\u8F93\u5165\u901A\u7528\u547D\u4EE4\uFF0C\u800C<code>-c <hashcode></code>\u662F\u52A8\u6001\u53D8\u5316\u7684\u3002</p>`,14);function _(f,x){const t=n("ExternalLinkIcon"),l=n("RouterLink");return c(),i("div",null,[u,a("p",null,[a("a",m,[h,v,e(t)])]),b,a("p",null,[g,e(l,{to:"/doc/jad.html"},{default:r(()=>[L]),_:1}),k]),C])}const y=d(p,[["render",_],["__file","dump.html.vue"]]);export{y as default};
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>\u6CE8\uFF1A\u8FD9\u91CC classLoaderClass \u5728 java 8 \u662F sun.misc.Launcher$AppClassLoader\uFF0C\u800C java 11 \u7684 classloader \u662F jdk.internal.loader.ClassLoaders$AppClassLoader\uFF0Ckillercoda \u76EE\u524D\u73AF\u5883\u662F java11\u3002</li></ul><p><code>--classLoaderClass</code> \u7684\u503C\u662F ClassLoader \u7684\u7C7B\u540D\uFF0C\u53EA\u6709\u5339\u914D\u5230\u552F\u4E00\u7684 ClassLoader \u5B9E\u4F8B\u65F6\u624D\u80FD\u5DE5\u4F5C\uFF0C\u76EE\u7684\u662F\u65B9\u4FBF\u8F93\u5165\u901A\u7528\u547D\u4EE4\uFF0C\u800C<code>-c <hashcode></code>\u662F\u52A8\u6001\u53D8\u5316\u7684\u3002</p>`,14);function g(L,k){const e=r("RouterLink");return t(),d("div",null,[p,u,a("p",null,[m,l(e,{to:"/doc/jad.html"},{default:c(()=>[h]),_:1}),v]),b])}const f=n(o,[["render",g],["__file","dump.html.vue"]]);export{f as default};
|
||||
@@ -0,0 +1,2 @@
|
||||
import{_ as e,o as a,c as s,d as n}from"./app.e2427bec.js";const t={},c=n(`<h1 id="echo" tabindex="-1"><a class="header-anchor" href="#echo" aria-hidden="true">#</a> echo</h1><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>write arguments to the standard output.</p></div><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token builtin class-name">echo</span> <span class="token string">'hello'</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,4),i=[c];function o(r,d){return a(),s("div",null,i)}const l=e(t,[["render",o],["__file","echo.html.vue"]]);export{l as default};
|
||||
@@ -1,2 +0,0 @@
|
||||
import{_ as s,o,c as t,a as e,b as c,e as a,d as r,r as i}from"./app.524ecf5c.js";const l={},d=e("h1",{id:"echo",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#echo","aria-hidden":"true"},"#"),a(" echo")],-1),h={href:"https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=command-echo",target:"_blank",rel:"noopener noreferrer"},_=e("code",null,"echo",-1),u=a("\u5728\u7EBF\u6559\u7A0B"),p=r(`<div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u6253\u5370\u53C2\u6570\uFF0C\u548C linux \u91CC\u7684 echo \u547D\u4EE4\u7C7B\u4F3C\u3002</p></div><h2 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token builtin class-name">echo</span> <span class="token string">'hello'</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,3);function m(f,v){const n=i("ExternalLinkIcon");return o(),t("div",null,[d,e("p",null,[e("a",h,[_,u,c(n)])]),p])}const x=s(l,[["render",m],["__file","echo.html.vue"]]);export{x as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-2c48f364","path":"/doc/echo.html","title":"echo","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/echo.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-2c48f364","path":"/doc/echo.html","title":"echo","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/echo.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,2 +0,0 @@
|
||||
import{_ as s,o as t,c as o,a as e,b as c,e as a,d as r,r as i}from"./app.524ecf5c.js";const l={},d=e("h1",{id:"echo",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#echo","aria-hidden":"true"},"#"),a(" echo")],-1),h={href:"https://arthas.aliyun.com/doc/arthas-tutorials.html?language=en&id=command-echo",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"echo",-1),_=a(" online tutorial"),p=r(`<div class="custom-container tip"><p class="custom-container-title">TIP</p><p>write arguments to the standard output.</p></div><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token builtin class-name">echo</span> <span class="token string">'hello'</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,3);function m(g,f){const n=i("ExternalLinkIcon");return t(),o("div",null,[d,e("p",null,[e("a",h,[u,_,c(n)])]),p])}const b=s(l,[["render",m],["__file","echo.html.vue"]]);export{b as default};
|
||||
@@ -0,0 +1,2 @@
|
||||
import{_ as e,o as a,c as s,d as c}from"./app.e2427bec.js";const n={},i=c(`<h1 id="echo" tabindex="-1"><a class="header-anchor" href="#echo" aria-hidden="true">#</a> echo</h1><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u6253\u5370\u53C2\u6570\uFF0C\u548C linux \u91CC\u7684 echo \u547D\u4EE4\u7C7B\u4F3C\u3002</p></div><h2 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token builtin class-name">echo</span> <span class="token string">'hello'</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,4),t=[i];function o(r,d){return a(),s("div",null,t)}const h=e(n,[["render",o],["__file","echo.html.vue"]]);export{h as default};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-18ad9fd0","path":"/en/doc/echo.html","title":"echo","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/echo.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-18ad9fd0","path":"/en/doc/echo.html","title":"echo","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/echo.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-ef7849a8","path":"/en/doc/external-command.html","title":"Load External Commands","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Loading methods","slug":"loading-methods","link":"#loading-methods","children":[{"level":3,"title":"Command line","slug":"command-line","link":"#command-line","children":[]},{"level":3,"title":"arthas.properties","slug":"arthas-properties","link":"#arthas-properties","children":[]},{"level":3,"title":"Default commands directory","slug":"default-commands-directory","link":"#default-commands-directory","children":[]}]},{"level":2,"title":"Directory scanning rules","slug":"directory-scanning-rules","link":"#directory-scanning-rules","children":[]},{"level":2,"title":"Writing an external command","slug":"writing-an-external-command","link":"#writing-an-external-command","children":[]},{"level":2,"title":"Maven dependencies","slug":"maven-dependencies","link":"#maven-dependencies","children":[]},{"level":2,"title":"Build and verify","slug":"build-and-verify","link":"#build-and-verify","children":[]},{"level":2,"title":"Loading behavior and conflicts","slug":"loading-behavior-and-conflicts","link":"#loading-behavior-and-conflicts","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/external-command.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-ef7849a8","path":"/en/doc/external-command.html","title":"Load External Commands","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Loading methods","slug":"loading-methods","link":"#loading-methods","children":[{"level":3,"title":"Command line","slug":"command-line","link":"#command-line","children":[]},{"level":3,"title":"arthas.properties","slug":"arthas-properties","link":"#arthas-properties","children":[]},{"level":3,"title":"Default commands directory","slug":"default-commands-directory","link":"#default-commands-directory","children":[]}]},{"level":2,"title":"Directory scanning rules","slug":"directory-scanning-rules","link":"#directory-scanning-rules","children":[]},{"level":2,"title":"Writing an external command","slug":"writing-an-external-command","link":"#writing-an-external-command","children":[]},{"level":2,"title":"Maven dependencies","slug":"maven-dependencies","link":"#maven-dependencies","children":[]},{"level":2,"title":"Build and verify","slug":"build-and-verify","link":"#build-and-verify","children":[]},{"level":2,"title":"Loading behavior and conflicts","slug":"loading-behavior-and-conflicts","link":"#loading-behavior-and-conflicts","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/external-command.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1 +1 @@
|
||||
const e=JSON.parse('{"key":"v-6a3a70c0","path":"/doc/external-command.html","title":"\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u52A0\u8F7D\u65B9\u5F0F","slug":"\u52A0\u8F7D\u65B9\u5F0F","link":"#\u52A0\u8F7D\u65B9\u5F0F","children":[{"level":3,"title":"\u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A","slug":"\u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A","link":"#\u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A","children":[]},{"level":3,"title":"\u901A\u8FC7 arthas.properties \u6307\u5B9A","slug":"\u901A\u8FC7-arthas-properties-\u6307\u5B9A","link":"#\u901A\u8FC7-arthas-properties-\u6307\u5B9A","children":[]},{"level":3,"title":"\u9ED8\u8BA4 commands \u76EE\u5F55","slug":"\u9ED8\u8BA4-commands-\u76EE\u5F55","link":"#\u9ED8\u8BA4-commands-\u76EE\u5F55","children":[]}]},{"level":2,"title":"\u76EE\u5F55\u626B\u63CF\u89C4\u5219","slug":"\u76EE\u5F55\u626B\u63CF\u89C4\u5219","link":"#\u76EE\u5F55\u626B\u63CF\u89C4\u5219","children":[]},{"level":2,"title":"\u7F16\u5199\u5916\u90E8\u547D\u4EE4","slug":"\u7F16\u5199\u5916\u90E8\u547D\u4EE4","link":"#\u7F16\u5199\u5916\u90E8\u547D\u4EE4","children":[]},{"level":2,"title":"Maven \u4F9D\u8D56","slug":"maven-\u4F9D\u8D56","link":"#maven-\u4F9D\u8D56","children":[]},{"level":2,"title":"\u6784\u5EFA\u548C\u9A8C\u8BC1","slug":"\u6784\u5EFA\u548C\u9A8C\u8BC1","link":"#\u6784\u5EFA\u548C\u9A8C\u8BC1","children":[]},{"level":2,"title":"\u52A0\u8F7D\u884C\u4E3A\u548C\u51B2\u7A81\u5904\u7406","slug":"\u52A0\u8F7D\u884C\u4E3A\u548C\u51B2\u7A81\u5904\u7406","link":"#\u52A0\u8F7D\u884C\u4E3A\u548C\u51B2\u7A81\u5904\u7406","children":[]}],"git":{"updatedTime":1786516912000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/external-command.md","version":"4.3.3"}');export{e as data};
|
||||
const e=JSON.parse('{"key":"v-6a3a70c0","path":"/doc/external-command.html","title":"\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u52A0\u8F7D\u65B9\u5F0F","slug":"\u52A0\u8F7D\u65B9\u5F0F","link":"#\u52A0\u8F7D\u65B9\u5F0F","children":[{"level":3,"title":"\u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A","slug":"\u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A","link":"#\u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A","children":[]},{"level":3,"title":"\u901A\u8FC7 arthas.properties \u6307\u5B9A","slug":"\u901A\u8FC7-arthas-properties-\u6307\u5B9A","link":"#\u901A\u8FC7-arthas-properties-\u6307\u5B9A","children":[]},{"level":3,"title":"\u9ED8\u8BA4 commands \u76EE\u5F55","slug":"\u9ED8\u8BA4-commands-\u76EE\u5F55","link":"#\u9ED8\u8BA4-commands-\u76EE\u5F55","children":[]}]},{"level":2,"title":"\u76EE\u5F55\u626B\u63CF\u89C4\u5219","slug":"\u76EE\u5F55\u626B\u63CF\u89C4\u5219","link":"#\u76EE\u5F55\u626B\u63CF\u89C4\u5219","children":[]},{"level":2,"title":"\u7F16\u5199\u5916\u90E8\u547D\u4EE4","slug":"\u7F16\u5199\u5916\u90E8\u547D\u4EE4","link":"#\u7F16\u5199\u5916\u90E8\u547D\u4EE4","children":[]},{"level":2,"title":"Maven \u4F9D\u8D56","slug":"maven-\u4F9D\u8D56","link":"#maven-\u4F9D\u8D56","children":[]},{"level":2,"title":"\u6784\u5EFA\u548C\u9A8C\u8BC1","slug":"\u6784\u5EFA\u548C\u9A8C\u8BC1","link":"#\u6784\u5EFA\u548C\u9A8C\u8BC1","children":[]},{"level":2,"title":"\u52A0\u8F7D\u884C\u4E3A\u548C\u51B2\u7A81\u5904\u7406","slug":"\u52A0\u8F7D\u884C\u4E3A\u548C\u51B2\u7A81\u5904\u7406","link":"#\u52A0\u8F7D\u884C\u4E3A\u548C\u51B2\u7A81\u5904\u7406","children":[]}],"git":{"updatedTime":1788152951000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/external-command.md","version":"4.3.5"}');export{e as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as t,o,c as p,a as n,b as c,d as s,e as a,r as l}from"./app.524ecf5c.js";const i={},r=s(`<h1 id="load-external-commands" tabindex="-1"><a class="header-anchor" href="#load-external-commands" aria-hidden="true">#</a> Load External Commands</h1><p>Arthas can load external command jars at startup. This is useful when you want to package team-specific diagnostic actions as Arthas commands. After an external command is loaded, you can use it like a built-in command and inspect it with <code>help</code>.</p><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>External commands are loaded only when the Arthas server starts. If Arthas has already attached to the target JVM, copying a jar into the command directory will not take effect until the Arthas server is restarted.</p></div><h2 id="loading-methods" tabindex="-1"><a class="header-anchor" href="#loading-methods" aria-hidden="true">#</a> Loading methods</h2><h3 id="command-line" tabindex="-1"><a class="header-anchor" href="#command-line" aria-hidden="true">#</a> Command line</h3><p><code>arthas-boot.jar</code> supports the <code>--command-locations</code> option. Each entry can be a jar file path or a directory path, separated by commas:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">java</span> <span class="token parameter variable">-jar</span> arthas-boot.jar --command-locations <span class="token string">'/opt/arthas/ext-command.jar,/opt/arthas/ext-commands'</span> <span class="token operator"><</span>pid<span class="token operator">></span>
|
||||
import{_ as t,o,c as p,a as n,b as c,d as s,e as a,r as l}from"./app.e2427bec.js";const i={},r=s(`<h1 id="load-external-commands" tabindex="-1"><a class="header-anchor" href="#load-external-commands" aria-hidden="true">#</a> Load External Commands</h1><p>Arthas can load external command jars at startup. This is useful when you want to package team-specific diagnostic actions as Arthas commands. After an external command is loaded, you can use it like a built-in command and inspect it with <code>help</code>.</p><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>External commands are loaded only when the Arthas server starts. If Arthas has already attached to the target JVM, copying a jar into the command directory will not take effect until the Arthas server is restarted.</p></div><h2 id="loading-methods" tabindex="-1"><a class="header-anchor" href="#loading-methods" aria-hidden="true">#</a> Loading methods</h2><h3 id="command-line" tabindex="-1"><a class="header-anchor" href="#command-line" aria-hidden="true">#</a> Command line</h3><p><code>arthas-boot.jar</code> supports the <code>--command-locations</code> option. Each entry can be a jar file path or a directory path, separated by commas:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">java</span> <span class="token parameter variable">-jar</span> arthas-boot.jar --command-locations <span class="token string">'/opt/arthas/ext-command.jar,/opt/arthas/ext-commands'</span> <span class="token operator"><</span>pid<span class="token operator">></span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>If you use <code>as.sh</code> from the full distribution, you can pass the same option:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>./as.sh --command-locations <span class="token string">'/opt/arthas/ext-command.jar,/opt/arthas/ext-commands'</span> <span class="token operator"><</span>pid<span class="token operator">></span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="arthas-properties" tabindex="-1"><a class="header-anchor" href="#arthas-properties" aria-hidden="true">#</a> arthas.properties</h3><p>Configure <code>arthas.commandLocations</code> in <code>arthas.properties</code>:</p><div class="language-properties ext-properties line-numbers-mode"><pre class="language-properties"><code><span class="token key attr-name">arthas.commandLocations</span><span class="token punctuation">=</span><span class="token value attr-value">/opt/arthas/ext-command.jar,/opt/arthas/ext-commands</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>If you start Arthas through <code>arthas-spring-boot-starter</code>, use <code>arthas.command-locations</code> in Spring Boot configuration files:</p><div class="language-properties ext-properties line-numbers-mode"><pre class="language-properties"><code><span class="token key attr-name">arthas.command-locations</span><span class="token punctuation">=</span><span class="token value attr-value">/opt/arthas/ext-command.jar,/opt/arthas/ext-commands</span>
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as t,o as p,c as o,a as n,b as c,d as s,e as a,r as l}from"./app.524ecf5c.js";const i={},r=s(`<h1 id="\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4" tabindex="-1"><a class="header-anchor" href="#\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4" aria-hidden="true">#</a> \u52A0\u8F7D\u5916\u90E8\u547D\u4EE4</h1><p>Arthas \u652F\u6301\u5728\u542F\u52A8\u65F6\u52A0\u8F7D\u5916\u90E8 command jar\uFF0C\u7528\u4E8E\u628A\u56E2\u961F\u5185\u90E8\u5E38\u7528\u7684\u8BCA\u65AD\u52A8\u4F5C\u5C01\u88C5\u6210\u65B0\u7684 Arthas \u547D\u4EE4\u3002\u5916\u90E8\u547D\u4EE4\u52A0\u8F7D\u540E\u53EF\u4EE5\u50CF\u5185\u7F6E\u547D\u4EE4\u4E00\u6837\u901A\u8FC7 <code>help</code> \u67E5\u770B\u548C\u6267\u884C\u3002</p><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u5916\u90E8\u547D\u4EE4\u53EA\u5728 Arthas \u670D\u52A1\u7AEF\u542F\u52A8\u65F6\u52A0\u8F7D\u3002Arthas \u5DF2\u7ECF attach \u5230\u76EE\u6807 JVM \u540E\uFF0C\u518D\u628A jar \u653E\u5230\u76EE\u5F55\u91CC\u4E0D\u4F1A\u81EA\u52A8\u751F\u6548\uFF0C\u9700\u8981\u91CD\u65B0\u542F\u52A8 Arthas \u670D\u52A1\u7AEF\u3002</p></div><h2 id="\u52A0\u8F7D\u65B9\u5F0F" tabindex="-1"><a class="header-anchor" href="#\u52A0\u8F7D\u65B9\u5F0F" aria-hidden="true">#</a> \u52A0\u8F7D\u65B9\u5F0F</h2><h3 id="\u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A" tabindex="-1"><a class="header-anchor" href="#\u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A" aria-hidden="true">#</a> \u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A</h3><p><code>arthas-boot.jar</code> \u652F\u6301 <code>--command-locations</code> \u53C2\u6570\uFF0C\u53C2\u6570\u503C\u53EF\u4EE5\u662F jar \u6587\u4EF6\u8DEF\u5F84\uFF0C\u4E5F\u53EF\u4EE5\u662F\u76EE\u5F55\u8DEF\u5F84\uFF0C\u591A\u4E2A\u8DEF\u5F84\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">java</span> <span class="token parameter variable">-jar</span> arthas-boot.jar --command-locations <span class="token string">'/opt/arthas/ext-command.jar,/opt/arthas/ext-commands'</span> <span class="token operator"><</span>pid<span class="token operator">></span>
|
||||
import{_ as t,o as p,c as o,a as n,b as c,d as s,e as a,r as l}from"./app.e2427bec.js";const i={},r=s(`<h1 id="\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4" tabindex="-1"><a class="header-anchor" href="#\u52A0\u8F7D\u5916\u90E8\u547D\u4EE4" aria-hidden="true">#</a> \u52A0\u8F7D\u5916\u90E8\u547D\u4EE4</h1><p>Arthas \u652F\u6301\u5728\u542F\u52A8\u65F6\u52A0\u8F7D\u5916\u90E8 command jar\uFF0C\u7528\u4E8E\u628A\u56E2\u961F\u5185\u90E8\u5E38\u7528\u7684\u8BCA\u65AD\u52A8\u4F5C\u5C01\u88C5\u6210\u65B0\u7684 Arthas \u547D\u4EE4\u3002\u5916\u90E8\u547D\u4EE4\u52A0\u8F7D\u540E\u53EF\u4EE5\u50CF\u5185\u7F6E\u547D\u4EE4\u4E00\u6837\u901A\u8FC7 <code>help</code> \u67E5\u770B\u548C\u6267\u884C\u3002</p><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u5916\u90E8\u547D\u4EE4\u53EA\u5728 Arthas \u670D\u52A1\u7AEF\u542F\u52A8\u65F6\u52A0\u8F7D\u3002Arthas \u5DF2\u7ECF attach \u5230\u76EE\u6807 JVM \u540E\uFF0C\u518D\u628A jar \u653E\u5230\u76EE\u5F55\u91CC\u4E0D\u4F1A\u81EA\u52A8\u751F\u6548\uFF0C\u9700\u8981\u91CD\u65B0\u542F\u52A8 Arthas \u670D\u52A1\u7AEF\u3002</p></div><h2 id="\u52A0\u8F7D\u65B9\u5F0F" tabindex="-1"><a class="header-anchor" href="#\u52A0\u8F7D\u65B9\u5F0F" aria-hidden="true">#</a> \u52A0\u8F7D\u65B9\u5F0F</h2><h3 id="\u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A" tabindex="-1"><a class="header-anchor" href="#\u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A" aria-hidden="true">#</a> \u901A\u8FC7\u547D\u4EE4\u884C\u6307\u5B9A</h3><p><code>arthas-boot.jar</code> \u652F\u6301 <code>--command-locations</code> \u53C2\u6570\uFF0C\u53C2\u6570\u503C\u53EF\u4EE5\u662F jar \u6587\u4EF6\u8DEF\u5F84\uFF0C\u4E5F\u53EF\u4EE5\u662F\u76EE\u5F55\u8DEF\u5F84\uFF0C\u591A\u4E2A\u8DEF\u5F84\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">java</span> <span class="token parameter variable">-jar</span> arthas-boot.jar --command-locations <span class="token string">'/opt/arthas/ext-command.jar,/opt/arthas/ext-commands'</span> <span class="token operator"><</span>pid<span class="token operator">></span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u5982\u679C\u4F7F\u7528\u5B8C\u6574\u5305\u91CC\u7684 <code>as.sh</code>\uFF0C\u4E5F\u53EF\u4EE5\u4F20\u5165\u76F8\u540C\u53C2\u6570\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>./as.sh --command-locations <span class="token string">'/opt/arthas/ext-command.jar,/opt/arthas/ext-commands'</span> <span class="token operator"><</span>pid<span class="token operator">></span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="\u901A\u8FC7-arthas-properties-\u6307\u5B9A" tabindex="-1"><a class="header-anchor" href="#\u901A\u8FC7-arthas-properties-\u6307\u5B9A" aria-hidden="true">#</a> \u901A\u8FC7 arthas.properties \u6307\u5B9A</h3><p>\u5728 <code>arthas.properties</code> \u4E2D\u914D\u7F6E\uFF1A</p><div class="language-properties ext-properties line-numbers-mode"><pre class="language-properties"><code><span class="token key attr-name">arthas.commandLocations</span><span class="token punctuation">=</span><span class="token value attr-value">/opt/arthas/ext-command.jar,/opt/arthas/ext-commands</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u5982\u679C\u901A\u8FC7 <code>arthas-spring-boot-starter</code> \u542F\u52A8\uFF0CSpring Boot \u914D\u7F6E\u6587\u4EF6\u4E2D\u63A8\u8350\u4F7F\u7528 <code>arthas.command-locations</code>\uFF1A</p><div class="language-properties ext-properties line-numbers-mode"><pre class="language-properties"><code><span class="token key attr-name">arthas.command-locations</span><span class="token punctuation">=</span><span class="token value attr-value">/opt/arthas/ext-command.jar,/opt/arthas/ext-commands</span>
|
||||
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user