ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Arthas 手动安装与命令行启动完全指南:as.sh/as.bat 脚本与手动拼接启动

Arthas 手动安装与命令行启动完全指南:as.sh/as.bat 脚本与手动拼接启动 Arthas 手动安装与命令行启动完全指南as.sh/as.bat 脚本与手动拼接启动【免费下载链接】arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas项目地址: https://gitcode.com/gh_mirrors/ar/arthas本篇技术指南以 Arthas 官方manual-install文档为核心系统讲解如何在 Linux/Unix/Mac 与 Windows 平台手动安装、启动 Arthas覆盖install-local.sh本地安装、as.sh/as.bat一键脚本启动、Windows 服务模式诊断以及脚本失效时的手动拼接命令行启动方案。读者读完将掌握从下载安装到 attach 目标 JVM 再到 telnet 连接交互的完整链路并能理解-pid、-telnet-port、-http-port、-core、-agent等核心启动参数背后的配置解析机制。一、手动安装的四个步骤当希望完全脱离在线安装脚本从发行包手动部署 Arthas 时按以下四步操作。1. 下载最新版本前往官方下载地址获取最新版本发行包zip 格式包含bin目录、arthas-core.jar、arthas-agent.jar等组件。2. 解压发行包unzip arthas-packaging-bin.zip解压后目录中应包含启动脚本与各 jar 包其中关键文件包括bin/as.sh、bin/install-local.sh、arthas-core.jar、arthas-agent.jar等仓库 bin 目录 中即存放这些脚本与配套资源。3. 安装到本地用户目录官方强烈建议安装前彻底删除所有旧版本 Arthas避免残留版本造成 attach 或端口冲突。sudo su admin rm -rf /home/admin/.arthas/lib/* # 删除所有旧版本遗留文件 cd arthas ./install-local.sh # 请根据目标 Java 进程的属主切换用户核心机制说明脚本 install-local.sh 做的事非常简单——将当前目录下的所有*.jar复制到${HOME}/.arthas/lib/${ARTHAS_VERSION}/arthas/下并给as.sh增加可执行权限。因此安装完成后启动脚本会从~/.arthas/lib/版本号/arthas找到对应的 core/agent jar 完成后续 attach。注意rm -rf与sudo su操作请务必确认目录与用户无误切换用户的原则是以目标 Java 进程的属主身份运行否则 attach 可能因权限不一致失败。4. 启动 Arthas启动前请确保旧版本 Arthas 服务已经执行过stop命令退出否则 telnet 端口默认 3658可能被旧实例占用。./as.sh不传 PID 时as.sh会列出本机所有 Java 进程供交互选择详情见下文as.sh用法。二、以脚本方式启动as.sh / as.batLinux/Unix/Mac 一行安装启动在 Linux、Unix、Mac 上可以直接粘贴以下命令一键完成启动脚本的下载curl -L https://arthas.aliyun.com/install.sh | sh该命令会把启动引导脚本as.sh下载到当前目录。你可以把as.sh移动到任意位置或将其所在目录加入$PATH以便全局调用。之后直接执行./as.sh进入交互界面执行./as.sh -h查看全部参数帮助脚本会同时列出当前可见的 Java 进程列表。Windows 平台Windows 用户下载解压后在bin目录下找到as.bat。该脚本目前主要接受一个参数pid即只能诊断本机上的 Java 进程官方欢迎精通 bat 脚本的开发者改进。先通过jps查看本机 Java 进程 PID然后as.bat pid诊断 Windows 服务模式的 Java 进程若目标应用以 Windows 服务方式运行使用as-service.bat提供服务化诊断能力as-service.bat -port port as-service.bat -pid pid as-service.bat -pid pid --interact :: --interact 打开服务 UI 交互模式便于诊断问题清理 Arthas 服务as-service.bat -removeas.sh 常用参数速查从仓库 bin/as.sh 的usage定义可以看到as.sh支持如下常用选项括号内为默认值参数说明--target-ip value目标 JVM 监听 IP默认127.0.0.1--telnet-port value目标 JVM 监听 telnet 端口默认3658--http-port value目标 JVM 监听 http 端口默认8563传-1可关闭--session-timeout value会话超时秒数默认108003 小时--use-version value使用指定版本 Arthas如./as.sh --use-version 4.3.4--repo-mirror value指定下载仓库镜像值为center/aliyun或 http 仓库地址东八区时区下自动默认aliyun--attach-only只 attach 目标进程不连接控制台--select value按类名或 jar 文件名自动选择目标进程如--select math-game--tunnel-server url远程 tunnel 服务器地址如ws://192.168.10.11:7777/ws--agent-id value指定 agent id--username/--password认证用户名/密码--disabled-commands value禁用指定命令逗号分隔如stop,dump--command-locations value外部命令 jar 路径或目录逗号分隔-c cmd/-f file批量执行模式直接执行命令;分隔或批量脚本文件--height/--width控制台终端尺寸-v/--verbose打印调试信息运行行为说明来自 as.sh 源码脚本依次执行环境检查校验curl/grep/awk/telnet/unzip是否存在、定位JAVA_HOMEJDK 8 及以下要求能找到tools.jar并通过-Xbootclasspath/a注入、解析参数、sanity_check校验目标 PID 存在且当前用户与进程属主一致root 跳过、port_pid_check校验 telnet 端口未被其他 Arthas 实例占用最后调用attach_jvm用arthas-core.jar完成 attach成功后通过active_console进入 telnet 交互界面。若~/.arthas/lib下无对应版本脚本会先按版本号从远程仓库下载update_if_necessary。三、手动拼接命令行启动脚本失效时的兜底方案如果as.sh/as.bat启动失败可以绕开脚本直接手动拼接 java 命令行完成 attach。整个流程分三步。1. 定位目标 JVM 的 java 路径Linux/Unix/Macps aux | grep javaWindows通过进程管理器查找 java 进程的可执行文件路径。假设找到的路径为/opt/jdk1.8/bin/java。2. 拼接 bootstrap 启动命令/opt/jdk1.8/bin/java -Xbootclasspath/a:/opt/jdk1.8/lib/tools.jar \ -jar /tmp/arthas-packaging/arthas-core.jar \ -pid 15146 \ -target-ip 127.0.0.1 -telnet-port 3658 -http-port 8563 \ -core /tmp/arthas-packaging/arthas-core.jar \ -agent /tmp/arthas-packaging/arthas/arthas-agent.jar命令由以下几部分组成参数作用-Xbootclasspath/a:/opt/jdk1.8/lib/tools.jar把tools.jar追加到 boot classpathArthas 依赖其中的 attach API仅 JDK 8 及以下需要-jar /tmp/arthas-packaging/arthas-core.jar指定 main 函数入口即核心启动器com.taobao.arthas.core.Arthas-pid 15146指定目标 Java 进程 PID-target-ip 127.0.0.1指定监听 IP-telnet-port 3658 -http-port 8563指定 telnet 与 HTTP 端口供后续远程连接-core .../arthas-core.jar -agent .../arthas-agent.jar指定 core 与 agent 两个 jar 包的路径JDK 9 注意事项若运行在 JDK 9 及以上版本tools.jar已并入 JDK 模块jdk.attach无需再指定-Xbootclasspath直接去掉该参数即可。Windows 上对应的as.bat则通过--ignore-tools开关跳过tools.jar检查见 bin/as.bat。参数解析的底层实现上述参数在 core/src/main/java/com/taobao/arthas/core/Arthas.java 中被解析为Configure配置对象——其中-pid、-core、-agent为必填项-target-ip、-telnet-port、-http-port、-session-timeout等为可选项Configure.java 则定义了telnetPort、httpPort、javaPid、tunnelServer、username/password、disabledCommands等字段并通过arthas.前缀的配置见 core/src/main/java/arthas.properties其中默认arthas.telnetPort3658、arthas.httpPort8563、arthas.ip127.0.0.1、arthas.sessionTimeout10800提供配置文件层面的默认值。这意味着手动拼接命令与脚本启动在底层走的是同一套参数解析与 attach 逻辑。查看日志启动日志输出在~/logs/arthas/arthas.logattach 失败时优先检查该日志或目标 JVM 的 stderr。3. attach 成功后用 telnet 连接attach 成功第二步返回后即可连接交互控制台telnet 127.0.0.1 3658连接成功后即可输入dashboard、thread、trace等命令开始诊断。若 telnet 不可用也可访问http://127.0.0.1:8563通过 Web Console 连接Windows 的as.bat在找不到 telnet 时会自动尝试打开浏览器访问该 HTTP 地址见 bin/as.bat 的attachSuccess逻辑。四、常见问题与排障要点端口被旧实例占用启动前务必对旧 Arthas 执行stop若端口仍被其他进程占用as.sh会提示使用--telnet-port 9998 --http-port -1之类的方式更换端口或先连接旧实例执行stop清理。权限不匹配as.sh的sanity_check会校验当前用户与目标进程属主不一致时建议sudo su 目标用户 ./as.sh或sudo -u 目标用户 -EH ./as.sh执行。找不到 tools.jarJDK 8 及以下若报tools.jar was not found说明JAVA_HOME指向了 JRE 而非 JDK请修正JAVA_HOMEJDK 9 则无需tools.jar。attach 失败结合~/logs/arthas/arthas.log与目标 JVM stderr 定位也可使用as.sh --debug-attach打开 JDPA 调试默认address8888进一步排查。跨版本残留升级版本前先清空~/.arthas/lib/*再重新执行install-local.sh避免新旧 jar 混用。五、延伸阅读官方文档目录site/docs/en/doc英文与 site/docs/doc中文其中 start-arthas.md 可进一步了解常规启动流程。脚本源码bin/as.sh、bin/as.bat、bin/install-local.sh、bin/as-service.bat。核心启动器与配置解析core/src/main/java/com/taobao/arthas/core/Arthas.java、core/src/main/java/com/taobao/arthas/core/config/Configure.java。默认配置参考core/src/main/java/arthas.properties。【免费下载链接】arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas项目地址: https://gitcode.com/gh_mirrors/ar/arthas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表