n0p*_*0pe 4 linux cpu process kill monitoring
有时,我有一个流氓 Java 进程,它占用了我 100% 的 CPU 并使其温度跃升约 30C(如果没有被杀死,通常会导致崩溃)。
问题是,我永远无法真正识别它(它有很长的参数和内容列表)或分析它,因为我必须如此迅速地杀死它。
是否有某种日志可以查看我杀死的过去进程的身份?如果没有,有没有办法让我在下次出现该过程时抓住它?
如果重要的话,我是 OpenSuse 11.4。
不,默认情况下不是。有太多日志记录(尤其是当您开始冒险记录写入日志条目的操作时……)。
BSD 进程记帐(如果有,请运行lastcomm),如果处于活动状态,则记录执行的每个命令的名称和一些基本统计信息,但不记录参数。
该审计子系统是更通用,更灵活。安装audit包并阅读SuSE 审计指南(主要是关于规则的部分),或者尝试
auditctl -A exit,always -F path=/usr/bin/java -S execve
Run Code Online (Sandbox Code Playgroud)
或者:与其杀死它,不如杀死kill -STOP它。该STOP暂停过程中,不问任何问题。您可以选择稍后继续 ( kill -CONT) 或终止 ( kill -KILL)。只要进程还在,你就可以检查它的命令行 ( /proc/12345/cmdline)、它的内存映射 ( /proc/12345/maps) 等等。
或者:将调试器附加到进程并暂停它。它就像gdb --pid 12345(Java 进程可能有更好的选择)一样简单;附加调试器会立即暂停进程(如果退出调试器,进程会收到一个 SIGCONT 并恢复)。
请注意,所有这些只捕获操作系统级进程,而不是 JVM 线程。您需要使用 JVM 功能来调试线程。
| 归档时间: |
|
| 查看次数: |
1558 次 |
| 最近记录: |