生产使用arthas查看resources目录下面的文件内容

有一次想看resources下面的mapper文件内容(代码执行和预期不一致,所以想排查一下是不是打上去的包有问题,没有通过下载jar的方式解压查看),然后想到了使用arthas来弄,这里记录一下怎么个查看法。

  1. 首先启动arthas,我一般都是通过java -jar arthas-boot.jar的方式,启动之后选择所要附加的程序
  2. 随便找一个已经加载到jvm中的类,最好不要用jdk里面的,全类名,通过sc -d 全类名查看类加载的信息,主要是拿到classLoaderHash后面有用
    比如我这里拿一个hutool工具包里面的StrUtil类,换成项目中自己建的类也行
    控制台输入sc -d cn.hutool.core.util.StrUtil 回车,然后就可以看到 classLoaderHash 18b4aac2
    在这里插入图片描述
  3. 使用arthas的ognl指令执行代码,获取文件内容
    因为ognl指令可以执行表达式,所以获取文件内容就很简单了,大概的思路就是先获取一个resource下面的文件输入流,然后读取流的内容。因为大部分项目都用了hutool工具包,所以这边使用hutool工具包里面的ResourceUtil类来获取,ResourceUtil类有一个readUtf8Str方法,传入一个classpath的路径,返回值是字符串。如果自己读取的话,要考虑流关闭的情况(毕竟控制台写一堆内容也不太方便阅读),所以就用hutool工具包了。
    指令:ognl -c 18b4aac2 '@cn.hutool.core.io.resource.ResourceUtil@readUtf8Str("HobbyMapper.xml")'
    18b4aac2就是步骤2中获取的classLoaderHash,说白了就是指定使用哪个类加载器,@cn.hutool.core.io.resource.ResourceUtil代表使用ResourceUtil这个类@readUtf8Str代表调用前面那个类的readUtf8Str方法,里面传参的内容就是clpasspath中文件的路径(可以不用加上classpath:前缀),这里我是想查看resources目录下面的HobbyMapper.xml文件内容,实际上这个项目中没有这个文件,我们查看一下输出的结果是什么
    在这里插入图片描述
    可以看到提示这个路径下面的资源不存在,接下来换一个存在的文件进行查看,比如sitLog/logback.xml文件(大家改成自己的)
    ognl -c 18b4aac2 '@cn.hutool.core.io.resource.ResourceUtil@readUtf8Str("sitLog/logback.xml")'在这里插入图片描述
    换成一个存在的文件就能正常的输出文件内容了,里面的\r\n是转义字符,可以复制出来查看
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生产环境中使用Arthas时,需要注意一些安全性和稳定性的考虑。下面是一些建议: 1. 预先规划:在使用Arthas之前,应该提前规划好其使用场景和目标,并确保只有授权的人员能够访问和使用Arthas。 2. 安全配置:为了保护Arthas的安全性,可以采取以下措施: - 限制Arthas的远程访问,只允许特定IP或特定用户进行远程连接。 - 设置Arthas的访问密码,以防止未授权的人员使用。 - 定期更新Arthas版本,以获取最新的安全修复和功能改进。 3. 功能限制:在生产环境中,建议限制Arthas使用功能,只开放必要的功能给运维人员使用。避免过多地修改和调试生产系统。 4. 调试风险:在生产环境中进行调试操作可能会带来一定的风险。因此,需要谨慎使用Arthas的调试功能,并确保在调试过程中不会对生产系统造成影响。 5. 日志记录:在使用Arthas时,建议记录相关操作和输出结果,以便后续审计和故障排查。 6. 定期审查:定期审查Arthas使用情况,包括访问日志、操作记录等,以确保其正常和安全使用。 此外,为了确保生产环境的稳定性和安全性,请在生产环境中使用Arthas之前先在非生产环境进行充分的测试和评估。并建议事先备份重要的数据和代码,以防止意外的问题发生。 总之,使用Arthas需要谨慎并遵循最佳实践,确保其在生产环境中的合理和安全的使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值