技術関係

すべてのGradleデーモンを1コマンドでサクッとkillしたい時のコマンド

(Timeout waiting to lock artifact cache. It is currently in use by another Gradle instance.)

複数のプロジェクトを行き来したりして、Gradleのバージョンが違うデーモンを立ち上げたりしてるとこんなエラーに遭遇する。

* What went wrong:
Error resolving plugin [id: 'org.springframework.boot', version: '2.6.0-SNAPSHOT']
> Could not resolve all dependencies for configuration 'detachedConfiguration1'.
   > Timeout waiting to lock artifact cache (/Users/macmini/.gradle/caches/modules-2). It is currently in use by another Gradle instance.
     Owner PID: 34626
     Our PID: 34600
     Owner Operation: 
     Our operation: 
     Lock file: /Users/macmini/.gradle/caches/modules-2/modules-2.lock

複数のデーモンがかちあってBootRun出来ない状態になっている。

スポンサーリンク

./gradlew –stop

まずは普通にデーモンを停止させる。
しかし、全てののデーモンが止まるわけではない。別の方法を探そう。

$ ./gradlew --stop

Stopping Daemon(s)
1 Daemon stopped

pkill -f ‘.*GradleDaemon.*’

pkillコマンドを利用してマッチしたすべてのプロセスを停止させる。

$ pkill -f '.*GradleDaemon.*'

-f オプションはfullの略。
'.*GradleDaemon.*'で一致するすべてのプロセスをkill出来るため、余計なことを考えずに全デーモンが停止する。
これで良さそう。

~/.zshrcに登録しておく

便利なので適当に~/.zshrcに登録しておく

$ echo "alias pkgdall=\"pkill -f '.*GradleDaemon.*'"\" >> ~/.zshrc
$ source ~/.zshrc
$ pkgdall // エイリアスはお好みで

これで手軽に全てのGradleのデーモンをkill出来るようになりました。

環境

  • Mac OS Big Sur 11.6
  • zsh 5.8

参考

Kill all Gradle Daemons Regardless Version? / stackoverflow

Linux で実行中の Java プロセスを探す/ Neo’s World

【 pkill 】コマンド――名前を指定してプロセスを終了させる / @IT

コメント

タイトルとURLをコピーしました