From 40f947929bdd7e54e60eedc0e386cfcad88560f6 Mon Sep 17 00:00:00 2001 From: hengyunabc Date: Wed, 4 Nov 2020 22:11:01 +0800 Subject: [PATCH] update --- arthas-boot.jar | Bin 136209 -> 138711 bytes arthas-demo.jar | Bin 3959 -> 4502 bytes as.sh | 130 +++++++++++++++++++++++++++++++++++------------- 3 files changed, 95 insertions(+), 35 deletions(-) diff --git a/arthas-boot.jar b/arthas-boot.jar index 712aaa9aa8733c2ed24ff2a366c8cd0630734d9c..1b247b58d02223c66c6d9e839233863c5d80977c 100644 GIT binary patch delta 22199 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 delta 19609 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 diff --git a/arthas-demo.jar b/arthas-demo.jar index d60d74bf9377749a199bdf36744280c1bcfc8cee..810fbb7e7c2a365dd62ba1300f387a53234bcda7 100644 GIT binary patch delta 1809 zcmY+F2~gA57Ki^ykWCW8B0CrY6+#fgjtByREJ6fP%F-GKA+kwD)}oRS5h%(c35F%0 z7&cSQQ(0ORG=PAzMFJ=oAOt8>wg+L=hUS&f=e*Z*=gv3h%$a-7y=Ufkwsoj_ioRYD z31t9~mIl5}IeMB17IqXUB8k1S?HFa(ZPJbl0nz5JO2#+eQ32nW77dPbZ+ixl&#tb- zSkr$R3z;i3gGaO$&K?M*qavR9YqEnKk8Y@$|7KOF+5>A$D|Yu7q~9kPt^A4e|9N`J zKGX-Y`5(~cadr=zho4swkm?U1!y4)cQ6YSia{|1x`>>5H`f31MKef`avrN4Lp(%xm zJZ;(Iq?6AtuwdiF#mep$3y6y?7}1A_Awq~j(FGap@f65@kGUWZMe&nbhbbRE0{|cc z27m(qnT=$N{;luC36DsY$edN3Ooy zcEDeM9?~i;gRQ16%qd=@)kbQsWTt+;bj~)YsOc7b!_c7O=9PfD^~^~#GA&)XWeUq_ zyf1?iNKhC38uPTs%FAu?m(i5VAj`EOf}H2yplJ6UX+IQkWl$@=Vg(C z12|+eIwYU*@^hrIl3SjVt*N_QQa7mZ6&E{-%!&vS_|$!#%`orGnQanDbPpN)-E67< zcDr5%(k%%S|51sMII#r*fM_U%FJnjS4;cGl%od*dE&ZixDYU@IFS#|=wram%=BX-S-<-LCu4Ohxk*+u=okh^49~KM~kBD~W zbtdW3C)&Qbo!;GodAtOFYybij=Wd-dumN2+THMzf<*+4m;J!nT1u0_%j@yqCGi<}! z1Cf4qo~>3UVQyb0kF8g6&AJ>)EP5J^-)9+n;z`B@nn(psl9zXm=3NVj`ZXjYqdFi< z{cu>$(YWw$*US1ihhO9h{-xwWymMnK6`g$sKU`Ica!(qRSm`OlGE%13Y@D3fOTUaG z(sE?NHS2Uoo2PgpcIWdrs$a-MPorbB>ho5uynr1k^b;ZKAxidQUV~%=o(C}G>G82x zt(HGxf8A-qW!{a?rLXlDKP!#tF+yVxq%CFJJB>S!nt1mQ=fyFA?_-E#vRpM|FYCf( z6wM`;x;bPYdG(0%GUgrz2{)Z>9%pJbn{D0F_z?71FiJel{20HQ_#Lb=IZ;nw;Wk9Z zhI5t@;g(ZAoP=ZAVB1Ky_RGDH4T+6ZFISNr@SV|GDC+GY?c<*ox||vo77+>5SI51B zhcg+PN#!lIn-ems=3G=#~tuPb+_L+if39~^yfH>=?Nei)FuWd>{6rp;9kb5|V$CzoftcNyS4SXoUbys#{ zW!0ZQSnFt7!+jvMHE!Z>)Z2)ZNb`g?VHjG~PiZE}-@ zg2JZUPL5qA_77-bIj`dyud{Gq8@)rkk1PegieVQc^9VCO3iRI8OeY}a*US2M8Lo3B zjE)6zR})%YZ|JRGZ9)($pS+NgaEe!gmC|i-Oj;{h@D(T;X_Vt2qGbUY8*i2TSeO$8ev!d&M#4O$RY;&zfWSN&6s5NYI_PLLp4Y=I7Y>` zpKQ<$EyLGevR{4fHKyNXE!f12hVs{l(FUdsooe^bXbO?n)XWJrKNf8J;X4N3DdH}? zacvzR1n6ktGo_}4oJx1#veW)2MY=P|xGNKgxSfhNM=b(><0tLPa0GMoQnO3kx~Z=h z{QoDy(j`_q<fRgPO@OZ#2&@eG=e(d$&v y_#APuM|We6yIah!Rz;G9QO<$%C@hd1#aa%g;_J0<_c{QO-CfhWgW(=b?EMAo%PHLe delta 1245 zcmbQH{9R5cz?+#xgn@yBgP}8lJCOTUVAVt+rFuuMLk1!)-y82JihBg?zNmA%b&G(2 z$oKiruGjfonzW>8`}Uh1N_p)wzaMj0z!*F&yr*;7f}>%%7TJH_Tu44K;d(%vhV>Pu zBsoRT?z&$q_k5qa>PqA0&po!hSN^kK;kMMauAaU$`bhP;SsfEDp8B=2wUM3eqN9lV z_B$GDUc_2{SLyvHQk>S%lq0ibiR(oT=1Q9;_j4B2j3CEy0UgT#a_q$GD$F42p8|-Q ztjMSZru`Ugz;rL8hY-k1`Ew2^{$pTZC}Cn?5M`JgD29#dIU1L6Iq!_)`gu8X9|{L; zah_nhzB0JrZCi)o$9fjo>q~PaEmd~zT*O>4#bIUpi3673G*e8YK5w^=&5@a+H0R#k zc#r15$)Wb8@g+Lnn3v{Xl}m2ntDHS|@_9Kmo}LSeE-A^8U%X9)`WzzmKD?U$>Dse; zjx&Oti`ieN^e>!U%&_$RZsUS!F`lP$?WVMvPrIZOT_AY6dS~LEd#AK{QQ~|vGxJF{ za7f+Ny>{awBLl-VRt5$WhRF{F%UdYj0`%rfV0ni?K0f6!W6!G*v6PLAPni(g8Ol~)8~^eeX=XurB`!Y_9#wSJw& z$~q^d3NE#5>2P?NbGt@w#|Bf*1o?wP1q+$Zzv$f6F)^@OfbpQpDaUL#_7ASNx6jEx z(Y7b~i@_E_R==#A6OQ+sS6C=+ab&-d;^ywM$+x|JpL&kSrft{lW;90isS2JH`h7#o zwq#E@+n4F9Cvn$IG~1?-qV*qdiibs z=~mO~&~1A6_Ga5(6fLqr`ro zgx0ZFlV$j7C40W=>|_Y=W@Hj!MlBB}Z{o88=cxC5CSY2P-vCTU@1eF)�Ffa%M^CAo^Y5X&JzJL-~4QlFxsbFAO(s*L>0|93R jkU1d7S_7r*ffz)?z>>z-+`#l|Jh@Czime`K2?GNF>Vpoz diff --git a/as.sh b/as.sh index 4b29b596c..891b957a1 100755 --- a/as.sh +++ b/as.sh @@ -8,10 +8,10 @@ # program : Arthas # author : Core Engine @ Taobao.com -# date : 2020-08-11 +# date : 2020-11-04 # current arthas script version -ARTHAS_SCRIPT_VERSION=3.3.9 +ARTHAS_SCRIPT_VERSION=3.4.4 # SYNOPSIS # rreadlink @@ -88,17 +88,20 @@ ARTHAS_LIB_DIR=${HOME}/.arthas/lib # target process id to attach TARGET_PID= -# target process id to attach -TARGET_IP="127.0.0.1" +# target process id to attach, default 127.0.0.1 +TARGET_IP= +DEFAULT_TARGET_IP="127.0.0.1" -# telnet port -TELNET_PORT="3658" +# telnet port, default 3658 +TELNET_PORT= +DEFAULT_TELNET_PORT="3658" -# http port -HTTP_PORT="8563" +# http port, default 8563 +HTTP_PORT= +DEFAULT_HTTP_PORT="8563" # telnet session timeout seconds, default 1800 -SESSION_TIMEOUT=1800 +SESSION_TIMEOUT= # use specify version USE_VERSION= @@ -139,6 +142,9 @@ AGENT_ID= # stat report url STAT_URL= +# app name +APP_NAME= + ############ Command Arguments ############ # if arguments contains -c/--command or -f/--batch-file, BATCH_MODE will be true @@ -393,6 +399,7 @@ Usage: $0 [-h] [--target-ip ] [--telnet-port ] [--http-port ] [--session-timeout ] [--arthas-home ] [--tunnel-server ] [--agent-id ] [--stat-url ] + [--app-name ] [--use-version ] [--repo-mirror ] [--versions] [--use-http] [--attach-only] [-c ] [-f ] [-v] [pid] @@ -412,6 +419,7 @@ Options and Arguments: --debug-attach Debug attach agent --tunnel-server Remote tunnel server url --agent-id Special agent id + --app-name Special app name --select select target process by classname or JARfilename -c,--command Command to execute, multiple commands separated by ; @@ -425,12 +433,12 @@ EXAMPLES: ./as.sh ./as.sh --target-ip 0.0.0.0 ./as.sh --telnet-port 9999 --http-port -1 - ./as.sh --tunnel-server 'ws://192.168.10.11:7777/ws' + ./as.sh --tunnel-server 'ws://192.168.10.11:7777/ws' --app-name demoapp ./as.sh --tunnel-server 'ws://192.168.10.11:7777/ws' --agent-id bvDOe8XbTM2pQWjF4cfw ./as.sh --stat-url 'http://192.168.10.11:8080/api/stat' ./as.sh -c 'sysprop; thread' ./as.sh -f batch.as - ./as.sh --use-version 3.3.9 + ./as.sh --use-version 3.4.4 ./as.sh --session-timeout 3600 ./as.sh --attach-only ./as.sh --select arthas-demo @@ -461,6 +469,33 @@ find_listen_port_process() fi } +getTargetIPOrDefault() +{ + local targetIP=${DEFAULT_TARGET_IP} + if [ "${TARGET_IP}" ]; then + targetIP=${TARGET_IP} + fi + echo $targetIP +} + +getTelnetPortOrDefault() +{ + local telnetPort=${DEFAULT_TELNET_PORT} + if [ "${TELNET_PORT}" ]; then + telnetPort=${TELNET_PORT} + fi + echo $telnetPort +} + +getHttpPortOrDefault() +{ + local httpPort=${DEFAULT_HTTP_PORT} + if [ "${HTTP_PORT}" ]; then + httpPort=${HTTP_PORT} + fi + echo $httpPort +} + # Status from com.taobao.arthas.client.TelnetConsole # Execute commands timeout STATUS_EXEC_TIMEOUT=100 @@ -479,8 +514,8 @@ find_listen_port_process_by_client() "${JAVA_HOME}/bin/java" ${ARTHAS_OPTS} ${JVM_OPTS} \ -jar "${arthas_lib_dir}/arthas-client.jar" \ - ${TARGET_IP} \ - ${TELNET_PORT} \ + $(getTargetIPOrDefault) \ + $(getTelnetPortOrDefault) \ -c "session" \ --execution-timeout 2000 \ 2>&1 @@ -567,6 +602,11 @@ parse_arguments() shift # past argument shift # past value ;; + --app-name) + APP_NAME="$2" + shift # past argument + shift # past value + ;; --use-http) USE_HTTP=true shift # past argument @@ -637,16 +677,18 @@ parse_arguments() # check telnet port/http port local telnetPortPid local httpPortPid - if [[ $TELNET_PORT > 0 ]]; then - telnetPortPid=$(find_listen_port_process $TELNET_PORT) + local telnetPortOrDefault=$(getTelnetPortOrDefault) + local httpPortOrDefault=$(getHttpPortOrDefault) + if [[ $telnetPortOrDefault > 0 ]]; then + telnetPortPid=$(find_listen_port_process $telnetPortOrDefault) if [ $telnetPortPid ]; then - echo "[INFO] Process $telnetPortPid already using port $TELNET_PORT" + echo "[INFO] Process $telnetPortPid already using port $telnetPortOrDefault" fi fi - if [[ $HTTP_PORT > 0 ]]; then - httpPortPid=$(find_listen_port_process $HTTP_PORT) + if [[ $httpPortOrDefault > 0 ]]; then + httpPortPid=$(find_listen_port_process $httpPortOrDefault) if [ $telnetPortPid ]; then - echo "[INFO] Process $httpPortPid already using port $HTTP_PORT" + echo "[INFO] Process $httpPortPid already using port $httpPortOrDefault" fi fi @@ -717,7 +759,7 @@ parse_arguments() exit 1 fi if [[ ($httpPortPid) && ($TARGET_PID != $httpPortPid) ]]; then - echo "Target process $TARGET_PID is not the process using port $HTTP_PORT, you will connect to an unexpected process." + echo "Target process $TARGET_PID is not the process using port $(getHttpPortOrDefault), you will connect to an unexpected process." echo "1. Try to restart as.sh, select process $httpPortPid, shutdown it first with running the 'stop' command." echo "2. Try to use different http port, for example: as.sh --telnet-port 9998 --http-port 9999" exit 1 @@ -759,14 +801,32 @@ attach_jvm() tempArgs+=("${STAT_URL}") fi + if [ "${APP_NAME}" ]; then + tempArgs+=("-app-name") + tempArgs+=("${APP_NAME}") + fi + + if [ "${TARGET_IP}" ]; then + tempArgs+=("-target-ip") + tempArgs+=("${TARGET_IP}") + fi + if [ "${TELNET_PORT}" ]; then + tempArgs+=("-telnet-port") + tempArgs+=("${TELNET_PORT}") + fi + if [ "${HTTP_PORT}" ]; then + tempArgs+=("-http-port") + tempArgs+=("${HTTP_PORT}") + fi + if [ "${SESSION_TIMEOUT}" ]; then + tempArgs+=("-session-timeout") + tempArgs+=("${SESSION_TIMEOUT}") + fi + "${java_command[@]}" \ ${ARTHAS_OPTS} ${JVM_OPTS} \ -jar "${arthas_lib_dir}/arthas-core.jar" \ -pid ${TARGET_PID} \ - -target-ip ${TARGET_IP} \ - -telnet-port ${TELNET_PORT} \ - -http-port ${HTTP_PORT} \ - -session-timeout ${SESSION_TIMEOUT} \ "${tempArgs[@]}" \ -core "${arthas_lib_dir}/arthas-core.jar" \ -agent "${arthas_lib_dir}/arthas-agent.jar" @@ -811,7 +871,7 @@ sanity_check() { } port_pid_check() { - if [[ $TELNET_PORT > 0 ]]; then + if [[ $(getTelnetPortOrDefault) > 0 ]]; then local telnet_output local find_process_status # declare local var before var=$() @@ -844,15 +904,15 @@ port_pid_check() { } print_telnet_port_pid_error() { - echo "[ERROR] The telnet port $TELNET_PORT is used by process $telnetPortPid instead of target process $TARGET_PID, you will connect to an unexpected process." + echo "[ERROR] The telnet port $(getTelnetPortOrDefault) is used by process $telnetPortPid instead of target process $TARGET_PID, you will connect to an unexpected process." echo "[ERROR] 1. Try to restart as.sh, select process $telnetPortPid, shutdown it first with running the 'stop' command." - echo "[ERROR] 2. Try to stop the existing arthas instance: java -jar arthas-client.jar 127.0.0.1 $TELNET_PORT -c \"stop\"" + echo "[ERROR] 2. Try to stop the existing arthas instance: java -jar arthas-client.jar 127.0.0.1 $(getTelnetPortOrDefault) -c \"stop\"" echo "[ERROR] 3. Try to use different telnet port, for example: as.sh --telnet-port 9998 --http-port -1" } print_telnet_port_used_error() { local error_msg=$1 - echo "[ERROR] The telnet port $TELNET_PORT is used, but process $error_msg, you will connect to an unexpected process." + echo "[ERROR] The telnet port $(getTelnetPortOrDefault) is used, but process $error_msg, you will connect to an unexpected process." echo "[ERROR] Try to use different telnet port, for example: as.sh --telnet-port 9998 --http-port -1" } @@ -881,16 +941,16 @@ active_console() if [ "${COMMAND}" ] ; then "${JAVA_HOME}/bin/java" ${ARTHAS_OPTS} ${JVM_OPTS} \ -jar "${arthas_lib_dir}/arthas-client.jar" \ - ${TARGET_IP} \ - ${TELNET_PORT} \ + $(getTargetIPOrDefault) \ + $(getTelnetPortOrDefault) \ "${tempArgs[@]}" \ -c "${COMMAND}" fi if [ "${BATCH_FILE}" ] ; then "${JAVA_HOME}/bin/java" ${ARTHAS_OPTS} ${JVM_OPTS} \ -jar "${arthas_lib_dir}/arthas-client.jar" \ - ${TARGET_IP} \ - ${TELNET_PORT} \ + $(getTargetIPOrDefault) \ + $(getTelnetPortOrDefault) \ "${tempArgs[@]}" \ -f ${BATCH_FILE} fi @@ -899,12 +959,12 @@ active_console() if [[ $(command -v telnet) == *"system32"* ]] ; then # Windows/system32/telnet.exe can not run in Cygwin/MinGw echo "It seems that current bash is under Windows. $(command -v telnet) can not run under bash." - echo "Please start cmd.exe from Windows start menu, and then run telnet ${TARGET_IP} ${TELNET_PORT} to connect to target process." - echo "Or visit http://127.0.0.1:${HTTP_PORT} to connect to target process." + echo "Please start cmd.exe from Windows start menu, and then run telnet $(getTargetIPOrDefault) $(getTelnetPortOrDefault) to connect to target process." + echo "Or visit http://127.0.0.1:$(getHttpPortOrDefault) to connect to target process." return 1 fi echo "telnet connecting to arthas server... current timestamp is `date +%s`" - telnet ${TARGET_IP} ${TELNET_PORT} + telnet $(getTargetIPOrDefault) $(getTelnetPortOrDefault) else echo "'telnet' is required." 1>&2 return 1