46

概括

我想知道如何杀死机器上运行的每一个 gradle 守护进程和进程,而不管 gradle 的版本或守护进程的版本如何,但是“--kill”或“--stop”命令只会停止这些进程匹配相同版本的gradle。

用例

我的 CI 构建框将有几个运行不同版本的 gradle 守护程序(因为我是一个使用包装器执行构建的好孩子)。偶尔我会发现缓存或增量构建的问题,作为预防措施,我喜欢杀死守护进程。我的开发盒也是如此,尽管冲突更常见于我使用的 VCS 或 IDE。

我在找什么

  1. 我希望有一个我缺少的标志或属性,我可以通过一个简单的单行命令传递给 gradle 来执行此操作,但如果它足够简单,我会接受更多。
  2. 没有脚本(循环、if-else 等)。
  3. 杀死所有 java 进程是不可接受的。

指向 gradle 文档的有用链接

禁用守护程序

停止现有的守护进程

4

4 回答 4

94

在 linux 下你可以使用 pkill:

pkill -f '.*GradleDaemon.*'

在 windows 下你可以使用 wmic:

WMIC PROCESS where "Name like 'java%' AND CommandLine like '%GradleDaemon%'" Call Terminate

PS。为什么“无脚本”可能是最简单的解决方案?

于 2019-01-15T07:58:43.447 回答
7

gradle 守护进程在 3 小时后没有消失;这可能是因为我在 VirtualBox 中作为 Linux 访客运行。

因此,以下内容删除了所有 gradle 守护进程,但它可能会被“皱眉”,因为它可能过多......

(1) ./gradlew --stop 确保所有守护进程都停止

(2) 删除项目中.gradle文件夹中的所有文件夹/文件

(3) 删除 /home/username/ Linu 中的 .gradle 文件夹 (4) 重启

所有的守护进程都消失了。下一次构建需要更长的时间,但值得,因为不喜欢每次启动 gradle 构建甚至清理时都看到 6 个停止的守护进程。

于 2019-11-11T01:06:30.173 回答
4

gradle --status命令将向您显示每个守护进程的进程 ID。然后,您可以使用您的操作系统来终止这些进程。

我假设这是跨平台功能,但这是 Windows 上的输出:

  PID STATUS   INFO
10276 IDLE     5.4.1
14068 IDLE     5.4.1

这比在系统上运行的每个 java.exe 进程玩 whack-a-mole 好一点。虽然如果 gradle 有一个可以终止所有正在运行的内置 gradle 守护进程的命令会很好。

于 2019-09-17T00:28:36.717 回答
1

我有一个类似的问题,我做了这个:

  1. 转到 C:\Users\"用户名"\.gradle\daemon
  2. 每个版本的 gradle 都有一个文件夹
  3. 删除实际运行版本的文件夹检查 --status
于 2021-05-18T11:34:02.240 回答