下午看到了文章《立即停止Android Studio 编译》,里面提到了使用gradle命令( gradle --stop )立即停止AS的编译任务。然这东西并不是姿势最好的。
仔细想想,在平时使用这个的时候(经常用到stop命令),会发现,比如:
# gradle dependencies
Starting a Gradle Daemon, 2 stopped Daemons could not be reused, use --status for details
然后再执行
# gradle --status
PID STATUS INFO
6636 IDLE 3.3 #正在运行的Daemon
20059 STOPPED (by user or operating system) #这个就是使用了stop命令后遗留的
16591 STOPPED (by user or operating system) #这个就是使用了stop命令后遗留的
Only Daemons for the current Gradle version are displayed. See https://docs.gradle.org/3.3/userguide/gradle_daemon.html#sec:status
是的,就像终端log告诉我们的一样,2 stopped Daemons could not be reused,daemons还在,只是不能再继续使用了,对于强迫症来说,这简直不能忍啊。当然了,不使用daemons属性的就算了...
如何去掉使用stop命令后残留的产物咱们先不讨论(重启吧),我们来说说咋干掉gradle task的同时不产生残留物。
其实很简单,使用命令,直接把Java进程干掉,简单方便直接粗暴。
在Mac终端下,使用命令:
killall java
当然,你可以查询对应的java进程的pid进行独立的关掉,但是这个相当的麻烦,所以建议以下方式。
或者使用像我这样使用Alfred(安利),然后结合workflow -- kill process
比如在终端gradle运行任务过程中,使用命令kill java,会显示:
pS:请留意自己是否还在使用其他java程序,不然killall命令会把所有的java进程都干掉的,所以还是推荐使用Alfred,如图试过,当as使用的java版本是自带的那个java,就可以区分并选择as的java进程进行kill。另外,终端运行的gradle命令是使用系统定义的那个,而不是as自带的。
总结:
1、不介意有残留的可以使用gradle --stop命令
2、一劳永逸的使用killall java命令或者使用Alfred结合wf直接干掉对应的java进程。