JSch实践(三)使用Shell执行远程命令

前面介绍了使用JSch的ChannelSftp实现对远程文件的操作,也实践了基于ChannelExec执行一些脚本命令,本文继续实践JSch的系列文章,使用ChannelShell来执行一些远程服务器的命令。 1.基本介绍 ChannelShell是 JSch 库提供的另一个类,用于在远程服务器上执行交互式的命令和脚本。下面是一些关于ChannelShell的特征和使用说明: (1)交互式执行:ChannelShell是一种交互式的通道类型,可以在远程服务器上执行命令并与其进行交互,类似于在终端中操作。 (2)命令执行和结果处理:使用ChannelShell可以执行多个命令,并获取每个命令的执行结果。你可以通过输入流(getInputStream)获取命令执行的标准输出,通过错误流(getErrStream)获取错误信息。 (3)命令的输入和输出:你可以通过输入流(getOutputStr...

文章分类:经验分享 技术知识

Sftp

JSch实践(二)使用Exec执行远程命令

前面介绍了使用JSch的ChannelSftp实现对远程文件的操作,本文继续实践JSch的系列文章,使用ChannelExec来执行一些远程服务器的命令。 1.简单介绍 ChannelExec是 JSch 提供的用于执行远程命令的类。它允许你在远程服务器上执行命令并获取输出结果。 下面是一些关于 `ChannelExec` 的特征和使用说明: (1)执行任意命令:`ChannelExec` 可以用于执行任何合法的命令,包括系统命令、脚本和自定义命令等。 (2)命令参数传递:你可以通过 `setCommand` 方法设置要执行的命令,还可以通过参数传递命令的选项、参数和参数值。 (3)直接执行和管道执行:`ChannelExec` 支持直接执行单个命令,也支持执行一系列命令并将前一个命令的输出作为下一个命令的输入,实现管道执行。 (4)获取执行结果:通过 `getInputStream` 方...

文章分类:经验分享 技术知识

Sftp
封面图片

JSch实践(一)简介和远程文件的操作

1.基本介绍 (1)JSch是Java Secure Channel的缩写,是一个JAVA实现的SSH2协议的开源库。它提供了在Java程序中进行SSH(Secure Shell)连接和通信的功能,官网地址为:“http://www.jcraft.com/jsch/”、“https://github.com/is/jsch”。 (2)JSch可以用于在Java程序中连接到远程服务器,并执行远程命令、传输文件等操作。它对SSH2协议的支持非常完整,并且提供了丰富的API和功能,使得开发人员能够轻松地编写出与SSH服务器进行交互的Java程序。 (3)JSch的主要特点包括: A. 支持SSH2协议的主要功能,包括认证、加密、数据压缩等。 B. 提供了丰富的API,可以方便地进行SSH连接、执行命令、传输文件等操作。 C. 支持各种身份验证方式,包括密码、公钥和代理等。 D. 可以通过端口转发...

文章分类:经验分享 技术知识

Sftp

学习arthas(十六)热点功能火焰图

arthas profiler提供了火焰图(Flame Graph)功能,可以帮助开发人员更直观地了解应用程序的性能瓶颈和调用链。profiler 命令支持生成应用热点的火焰图。本质上是通过使用 async-profiler不断的采样,然后把收集到的采样结果生成火焰图。 什么是火焰图(Flame Graph)? 火焰图是一种可视化工具,用于呈现函数调用栈的层级结构和执行时间的比例。它以一种直观的方式显示了程序中各个函数的执行时间和调用关系,能够帮助开发人员快速定位性能瓶颈所在并进行优化。不过需要注意,profiler模块在采集性能数据时会对应用造成一定的影响,建议在生产环境中谨慎使用。 如何生成火焰图? 使用arthas profiler生成火焰图的步骤如下: (1)启动arthas控制台,并连接到目标应用程序。 (2)执行profiler start命令,开始性能分析。 (3)让应用程序...

文章分类:经验分享 技术知识

Arthas

学习arthas(十五)无侵入的热部署

1.基本介绍 arthas提供了热部署功能,可以在不停止应用程序的情况下修改代码并立即生效。所以在前面也实践了它的诸多命令都是为在分析问题的原因上,若问题分析清除了,能够直接在不影响用户使用的前提下修正解决,就显得非常高端了。在arthas里提供了jad、mc、redefine、retransform几个命令专门可协同的作用于程序的热部署。 所谓的热部署是指在不重启Java应用程序进程的前提下覆盖现有的程序版本代码达到运行生效的目的,同时热部署也不是无脑的代码更新,通常像一些框架应用的配置文件的修改后不会被更新(一般框架对于配置文件只读取一次),修改了全局静态全局常量也基本不会生效,新增加的类和方法也不会生效,仅在修改了方法内部的代码会生效,当然了,对于无限循环的场景也不会生效。闲扯几句JRebel实在是太高端了,它可以支持新创建的类、新增加的方法、常量的修改、SpringBoot项目中的...

文章分类:经验分享 技术知识

Arthas

学习arthas(十四)方法执行时的时空隧道

很多时候有很多的问题由于不同的运行环境所在操作系统的不同,数据的不同,用户的不同等多种多样的因素存在,导致某些程序代码运行的有一些潜在问题,但这样的问题往往很难在线下开发测试环境去复现,导致一些问题的分析解决变得困难重重。 arthas的tt命令是方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测。watch 虽然很方便和灵活,但需要提前想清楚观察表达式的拼写,这对排查问题而言要求太高,因为很多时候我们并不清楚问题出自于何方,只能靠蛛丝马迹进行猜测。这个时候如果能记录下当时方法调用的所有入参和返回值、抛出的异常会对整个问题的思考与判断非常有帮助。于是乎,TimeTunnel 命令就诞生了————“对于一个最基本的使用来说,就是记录下当前方法的每次调用环境及请求与响应现场。” (1)监控某个类的某些方法,在监控的时间段内,输出存在的方法调用列表...

文章分类:经验分享 技术知识

Arthas

学习arthas(十三)监视代码的执行结果

arthas watch命令是arthas工具提供的一个命令,用于在应用运行过程中观察指定方法的执行情况,可以帮助开发人员实时监视指定类和方法的调用情况。可以方便地观察到指定方法的调用与执行情况,对于代码执行的:返回值、异常、入参、this等代码范围,通过OGNL表达式进行对应代码逻辑范围上执行的应用排查。 (1)监控一个类的一个方法,跟踪参数、this对象、返回值、异常信息 watchcn.chendd.blog.admin.blog.tag.controller.TagManageControllerqueryTagsPage --exclude-class-pattern*CGLIB*-x2{params,target,returnObj,throwExp}[objectObject] (2)监控方法调用超过 100 秒以上 watchcn.chendd.blog.admin.blo...

文章分类:经验分享 技术知识

Arthas

学习arthas(十二)跟踪方法代码的执行

1.基本介绍 trace命令是Arthas工具中的一个强大的命令,用于跟踪方法的执行情况。它可以帮助开发人员进行代码调试、性能分析和问题排查,是一个动态方法追踪命令,提供了一种跟踪方法参数和返回值、异常情况等的方法。trace 能方便的帮助你定位和发现因 RT 高而导致的性能问题缺陷,但其每次只能跟踪一级方法的调用链路,对一个方法内部的调用路径进行追踪,输出方法路径上每个子方法的调用耗时细节。 通过使用arthas trace命令,可以灵活地跟踪指定类和方法的执行情况,并结合选项进行更精细的控制。这对于调试和性能分析非常有帮助。需要注意的是arthas trace命令会对目标方法进行字节码增强,因此在使用完毕后,建议使用retransform命令恢复字节码,以避免对应用程序的性能造成影响。 trace命令可以对方法内部调用路径,并输出方法路径上的每个节点上耗时。trace 命令能主动搜索 ...

文章分类:经验分享 技术知识

Arthas

学习arthas(十一)输出方法调用栈

stack 命令用于查看指定类和方法的调用栈信息,即堆栈信息,包含方法调用链、堆栈深度等信息,用于追踪程序执行的调用路径,同时也可以帮助我们直观的查看某个类是怎么被调用执行的,特别是在分析一些开源项目的源码时,还是有一定的用武之地的。 1.基本介绍 调用栈信息包括每个线程的调用树,从最上层的方法开始,依次展示方法的调用关系。每个方法的信息包括类名、方法名、源码位置等。通常在方法抛出异常后,可以看到异常的堆栈信息,通过堆栈中异常的原因描述来定位异常所发生的位置和异常发生的原因,实际上对于正常运行的代码也是存在方法调用堆栈的,只不过通常情况下大家不会使用到,比如下列代码可获取到方法调用时的堆栈,参考如下: publicstaticvoidinfo(Stringmessage){ StackTraceElement[]stackTraceElements=Thread.currentThread...

文章分类:经验分享 技术知识

Arthas

学习arthas(十)方法执行结果监控

Arthas的monitor命令是其强大的监控功能之一,它可以帮助开发人员实时监控和分析一段时间段内Java应用程序的性能指标和方法调用情况,面向程序执行结果统计,命令属于异步定时反馈统计监控的结果,本文对于monitor命令做一个简单常用的实践。 1.基本用法 (1)monitor命令用于监控某个类的某些方法,类和方法名,都可以是完整的类名或通配符表达式; (2)监控参数选项有: -c:指定监控的周期,默认值为 120 秒。 -b:在方法调用之前计算 condition-express。若监控的条件有耗时时间,在调用之前计算条件表达式将会存在问题。 -E:开启正则表达式匹配,默认为通配符匹配。 2.应用场景 (1)性能优化:通过监控方法的执行时间和执行频率,可以发现应用程序中的性能瓶颈,从而进行针对性的优化。 (2)排查问题:当应用程序出现性能问题或异常情况时,可以使用monitor命令...

文章分类:经验分享 技术知识

Arthas
本站信息

 运营时间: 天

 用户数量: 人

 文章数量: 篇

 评论数量: 条

 点赞个数: 个

 最后更新:

标签云