【发布时间】: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.html 说 HeapDumpOnOutOfMemoryError 是一个选项。是什么让您认为您可以首先将 shell 命令 传递给它?!
-
@GhostCat 我关注了这篇帖子stackoverflow.com/questions/12484559/…。但是,如果不是这样,对原始问题有什么建议吗?
-
您是否尝试了第二个答案,指向一个shell脚本? (除此之外,这些 -XX 选项就是这样:它们随时可能发生变化。这可能适用于早期版本的 java,但不适用于您正在使用的特定 jvm 实现)
标签: java linux heap-dump hprof