如何使用Java跟踪JVM文件系统访问

使用自定义安全管理器作为本机跟踪程序的低开销替代方法。

对于跟踪Java应用程序的文件系统访问,本机跟踪工具始终是首选。在Windows上,使用Process Monitor跟踪I / O。在Linux上,使用strace。其他平台也提供类似的功能。

通过直接在Java中进行跟踪,您可以解决环境限制。例如,在缺少该CAP_SYS_PTRACE功能的容器中strace不可用,并且容器主机并非始终可访问。此外,潜在的更轻量的跟踪机制可方便地在生产环境中进行跟踪。

要走Java路线,您可以通过扩展来实现自己的安全管理器java.lang.SecurityManager。此类提供了checkRead,checkWrite和checkDelete方法,一旦代码尝试进行相应的访问,它们就会被调用。

一个示例实现:

public class TraceSecurityManager extends SecurityManager {
   
  public void checkRead(String file) {
   
    System.out.println("Read: " + file);
    super.checkRead(file);
  }
  public void checkRead(String file, Object context) {
   
    System.out.println("Read: " + file);
    super.checkRead(file, context);
  }
  public void checkWrite(String file) {
   
    System.out.println("Write: " + file);
    super.checkWrite(file);
  }
  public void checkDelete(String file) {
   
    System.out.println("Delete: " + file);
    super.checkDelete(file);
  }
}

为了测试样本,我们使用Java编译器作为测试对象。为了启用跟踪安全管理器,我们设置适当的系统属性,并使用有效的Java源文件执行命令Test.java:

$ java -Djava.security.manager=TraceSecurityManager com.sun
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值