我的机器一直使用命令“java”(在顶部的“command”列下列出)启动进程,这些进程会在几秒钟内耗尽我所有的资源,然后消失,几秒钟后一个新的将启动,不同的PID。
我想知道是什么启动了这些 java 进程。
我从执行 top -> c 获得了一些信息,它显示了 java 进程完整命令:
11470 尼尔 20 0 4616088 2.134g 19156 S 121.9 57.1 0:04.20 /opt/jdk-11.0.1/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFr+
然而,这对我来说没有任何意义。不知道有没有帮助。
我已经尝试过的其他答案和事情:
我已经看到了这个答案如何找到进程的起源并永久停止它?其中提到找到 proc/PID 目录。其他几个类似的问题也给出了这个建议。但这对我没有帮助,因为 PID 不断变化。
我已经尝试过ps aux | grep java
,但这仅显示 grep 本身:
neil~$ ps aux | grep java
neil 8539 0.0 0.0 14224 928 pts/19 S+ 22:20 0:00 grep --color=auto java
我试过killall java
这确实杀死了当前的 PID,但几秒钟后下一个开始......
我最初认为这是因为我安装了 Cisco AnyConnect(请参阅帮助卸载 3rd 方软件)。我假设的原因是:a)问题在我安装 AnyConnect 时开始,b)当我能够在 java 进程消失之前杀死它时,我能看到的唯一受影响的程序是 AnyConnect,它停止渲染大部分 UI . 现在我不确定,因为我卸载了 AnyConnect,但问题仍然存在。
来自控制台的命令
ps auxf
将为您提供简单的进程“树”视图。干脆杀了父母。或者在您的情况下,您最好在 java: 之前找到进程
ps auxf | grep java -B11
您可以尝试使用该
pstree -p
命令来获取有关您尝试追踪的 java 进程的祖先信息。这将转储从 init 开始的进程树的 ASCII 描述,以及这些进程的 PID,并可能为您提供有关继续启动 java.util 的父进程的信息。我建议查看该
pspy
实用程序(来自https://github.com/DominicBreuker/pspy)是否会提供有关短期进程及其尝试访问的文件的更多信息。如果是这样,那可能会让您确定是什么在创建它们。Java 命令被top截断。你可以试试
列出所有有相关的进程。完整的命令可能会给您一些见解。顺便说一句,该命令将最大堆大小设置为 1Gb,因此它至少不应占用所有内存,除非它产生许多进程