【问题标题】:Give read permission to others for HeapDumpOnOutOfMemoryError file .hprof on generated为生成的 HeapDumpOnOutOfMemoryError 文件 .hprof 授予其他人读取权限
【发布时间】:2019-03-14 21:01:57
【问题描述】:

我用这些参数启动我的 java

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/log/${SERVICE}_`date +%Y-%m-%d:%H:%M:%S`.hprof"

发生堆转储时,.hprof 文件具有-rw------- (600) 权限,其他用户无法读取。

如何使用644 权限生成这些文件?

尝试: 我尝试传递这个-XX:+HeapDumpOnOutOfMemoryError="chmod 644 *.hprof",但得到了错误:

Improperly specified VM option 'HeapDumpOnOutOfMemoryError=chmod'

正确的语法应该是什么?谢谢

【问题讨论】:

  • 你检查你的umask设置了吗?通常,应用程序会使用环境对其施加的 umask 设置?
  • @GhostCat 其他生成的日志有正确的644。例如:gc.log、nohup.log
  • docs.oracle.com/javase/8/docs/technotes/tools/windows/java.htmlHeapDumpOnOutOfMemoryError 是一个选项。是什么让您认为您可以首先将 shell 命令 传递给它?!
  • @GhostCat 我关注了这篇帖子stackoverflow.com/questions/12484559/…。但是,如果不是这样,对原始问题有什么建议吗?
  • 您是否尝试了第二个答案,指向一个shell脚本? (除此之外,这些 -XX 选项就是这样:它们随时可能发生变化。这可能适用于早期版本的 java,但不适用于您正在使用的特定 jvm 实现)

标签: java linux heap-dump hprof


【解决方案1】:

发现问题,正确的args列表应该是

-XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError='chmod 644 *.hprof' -XX:HeapDumpPath=/log/${SERVICE}_`date +%Y-%m-%d:%H:%M:%S`.hprof"

由于我将所有内容都放在双引号中,然后放入JAVA_OPTIONS,因此内引号应该是单引号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-26
    • 2016-12-14
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多