杀死所有Gradle守护程序,无论版本如何?

Pyt*_*try 7 java gradle gradle-daemon

摘要

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

用例

我的CI构建框将具有运行不同版本的多个gradle守护程序(因为我是一个使用包装程序执行构建的好孩子)。有时,我会发现缓存或增量生成的问题,作为预防措施,我喜欢杀死守护程序。尽管我使用的任何VCS或IDE的冲突更多,但我的开发箱也是如此。

我在寻找什么

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

Gradle文档的有用链接

禁用守护程序

停止现有的守护程序

Nik*_*kel 10

在Linux下,您可以使用pkill:

pkill -f '.*GradleDaemon.*'
Run Code Online (Sandbox Code Playgroud)

在Windows下,您可以使用wmic:

WMIC PROCESS where "Name like 'java%' AND CommandLine like '%GradleDaemon%'" Call Terminate
Run Code Online (Sandbox Code Playgroud)

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

  • 我基本上想要一些让我的团队中的开发人员很容易记住的东西,而且我需要它与操作系统无关。我可以自己编写脚本,但我(或曾经)希望拥有属于 gradle 的内容(例如“--stop-all”标志)。您的解决方案也很好,因此我可以在脚本中使用它,该脚本首先检查操作系统,然后执行这两个命令之一,但在接受此作为答案之前,我将等待一段时间。 (2认同)

Cyp*_*her 9

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

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

  PID STATUS   INFO
10276 IDLE     5.4.1
14068 IDLE     5.4.1
Run Code Online (Sandbox Code Playgroud)

这比对系统上运行的每个 java.exe 进程玩打地鼠游戏要好一些。如果 gradle 有一个可以终止所有正在运行的内置 gradle 守护进程的命令,那就太好了。

  • `gradle --status` 的工作方式与 `--stop` 相同,仅列出与您正在运行的版本相同的守护进程。 (10认同)

小智 5

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

因此,以下内容删除了所有 gradle 守护程序,但可能会“不赞成”,因为它可能过多......

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

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

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

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

  • 我认为你需要做的就是删除 `/home/username/.gradle/daemons` (2认同)
  • gradlew --stop 对我有用。杀死 Java 没有用。 (2认同)

小智 5

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

  1. 转到 C:\Users\"用户名"\.gradle\daemon
  2. 每个版本的gradle都有一个文件夹
  3. 删除实际运行版本的文件夹使用--status检查