加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:35:29 所属栏目:Java 来源:网络整理
导读:假设我有一些进程 – 在这种情况下是由ant发起的 Java进程.我发现随机的东西正在发送这个Java进程SIGTERM.它可能是将信号发送给自身的过程,也可能是其他信号. 我已经消除了大多数明显的原因(oom杀手,父进程杀死孩子等),但我真的想知道谁发送这个进程SIGTERM.
假设我有一些进程 – 在这种情况下是由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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读