微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 找到一个杀死我的进程的神秘过程

假设我有一些进程 – 在这种情况下是由ant发起的 Java进程.我发现随机的东西正在发送这个Java进程SIGTERM.它可能是将信号发送给自身的过程,也可能是其他信号.

我已经消除了大多数明显的原因(oom杀手,父进程杀死孩子等),但我真的想知道谁发送这个进程SIGTERM.有没有办法在操作系统或流程级别跟踪此行为?

解决方法

你可以通过JNI在你的java程序中安装一个信号处理程序,参见 interface java with C timer library using JNI作为一个例子(捕获SIgalRM,但应该很容易适应).但是在使用java中的信号时要小心一些问题(参见 http://nerds-central.blogspot.de/2011/04/java-jvm-jni-and-signal-handling.html):基本上你需要注意将信号处理程序链接到现有信号处理器而不是替换它们.

如果你怀疑人类交互,另一种方法可能是修改发生这种谜团的机器上的kill可执行文件.将其替换为记录谁登录的shell脚本,其PID和父PID,然后调用原始kill.

我把一些可以在我的电脑上运行的东西放在一起:https://gist.github.com/4183018

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐