这个问题很奇怪。请注意,这不是一个android-studio
问题,而是一个snap
问题。 android-studio
只有一个罪魁祸首行为不当,应该受到约束snap
。
android-studio
是通过 安装的snap
。但有时关闭后,进程仍然挂在后台并消耗大量 CPU(因此消耗大量电池电量)android-studio
。然后我需要使用带有开关的进程 ID 手动终止这些进程-9
。
这真的是我们想要的方式吗snap
?
我尝试在互联网上寻找任何指针,但完全没有找到如何借助 来实现这一点snap
。要么命令似乎根本不存在,要么没有任何帮助或完全错误。此外,snap 文档似乎很好地隐藏了我要找的部分(或者它缺失了?)。
注意,所有常见的事情都没有问题:
- 从 Ubuntu 安装软件包
- 删除包
- 使用包(大部分按照我想要的方式工作)
- 正确地更新软件包(经过几天的谷歌搜索,我终于找到了一个可以自动保持整洁的解决方法)
但我还是很困惑我该如何控制 snap 包中的应用程序适当地:
嗯,是的snap
,所以一切都包装得井井有条,对吧?而且肯定有一些常见的简单方法可以完全阻止这种卡扣式容器中的一切,对吧?
例如,将lxc-stop container
容器中的所有东西都拆掉。很简单。但snap
我没有找到类似的东西。
这是我尝试过的方法,部分是其他页面建议的:
$ snap status
error: unknown command "status", see 'snap help'.
$ snap stop android-studio
error: access denied (try with sudo)
它是以用户身份启动的,因此同一个用户必须能够再次停止它。 sudo
当然在这里是可以做到的,但让我们重试sudo
:
$ sudo snap stop android-studio
error: snap "android-studio" has no services
$ killall android-studio
android-studio: no process found
但是对于ps
和top
或,htop
有过程(java
当然,部分是):
$ ps auxwww | grep android
tino 14352 0.0 0.0 2616 1732 ? S 12:48 0:00 /bin/sh /snap/android-studio/101/android-studio/bin/studio.sh
tino 14428 4.7 10.6 5042148 420488 ? Sl 12:48 2:19 /snap/android-studio/101/android-studio/jre/bin/java -classpath /snap/android-studio/101/android-studio/lib/bootstrap.jar:/snap/android-studio/101/android-studio/lib/extensions.jar:/snap/android-studio/101/android-studio/lib/util.jar:/snap/android-studio/101/android-studio/lib/jdom.jar:/snap/android-studio/101/android-studio/lib/log4j.jar:/snap/android-studio/101/android-studio/lib/trove4j.jar:/snap/android-studio/101/android-studio/lib/jna.jar:/snap/android-studio/101/android-studio/jre/lib/tools.jar -Xms256m -Xmx1280m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -XX:CICompilerCount=2 -Dsun.io.useCanonPrefixCache=false -Djdk.http.auth.tunneling.disabledSchemes="" -Djdk.attach.allowAttachSelf=true -Dkotlinx.coroutines.debug=off -Djdk.module.illegalAccess.silent=true -Djna.nosys=true -Djna.boot.library.path= -Didea.vendor.name=Google -Dawt.useSystemAAFontSettings=lcd -Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine -Dsun.tools.attach.tmp.only=true -XX:ErrorFile=/home/tino/java_error_in_STUDIO_%p.log -XX:HeapDumpPath=/home/tino/java_error_in_STUDIO.hprof -Didea.paths.selector=AndroidStudio4.1 -Djb.vmOptionsFile=/snap/android-studio/101/android-studio/bin/studio64.vmoptions -Didea.platform.prefix=AndroidStudio -Didea.jre.check=true com.intellij.idea.Main
tino 45016 0.0 0.0 11128 2452 pts/12 S+ 13:37 0:00 grep --color=auto android
$ kill 14352
$ kill 14352
-bash: kill: (14352) - No such process
$ kill 14428
$ kill 14428
$ ps auxwww | grep android
tino 14428 4.7 10.6 5042148 420488 ? Sl 12:48 2:19 /snap/android-studio/101/android-studio/jre/bin/java -classpath /snap/android-studio/101/android-studio/lib/bootstrap.jar:/snap/android-studio/101/android-studio/lib/extensions.jar:/snap/android-studio/101/android-studio/lib/util.jar:/snap/android-studio/101/android-studio/lib/jdom.jar:/snap/android-studio/101/android-studio/lib/log4j.jar:/snap/android-studio/101/android-studio/lib/trove4j.jar:/snap/android-studio/101/android-studio/lib/jna.jar:/snap/android-studio/101/android-studio/jre/lib/tools.jar -Xms256m -Xmx1280m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -XX:CICompilerCount=2 -Dsun.io.useCanonPrefixCache=false -Djdk.http.auth.tunneling.disabledSchemes="" -Djdk.attach.allowAttachSelf=true -Dkotlinx.coroutines.debug=off -Djdk.module.illegalAccess.silent=true -Djna.nosys=true -Djna.boot.library.path= -Didea.vendor.name=Google -Dawt.useSystemAAFontSettings=lcd -Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine -Dsun.tools.attach.tmp.only=true -XX:ErrorFile=/home/tino/java_error_in_STUDIO_%p.log -XX:HeapDumpPath=/home/tino/java_error_in_STUDIO.hprof -Didea.paths.selector=AndroidStudio4.1 -Djb.vmOptionsFile=/snap/android-studio/101/android-studio/bin/studio64.vmoptions -Didea.platform.prefix=AndroidStudio -Didea.jre.check=true com.intellij.idea.Main
tino 45020 0.0 0.0 11128 2544 pts/12 S+ 13:37 0:00 grep --color=auto android
$ kill -9 14428
$ kill -9 14428
-bash: kill: (14428) - No such process
显然有些人是顽固分子,需要-9
被杀死!
笔记:
- 我不想使用
killall java
,因为这会影响其他java
应用程序。 - 当然,我可以创建一些脚本,来研究
/proc
和整理属于snap
并对此进行操作的进程。 - 但是我正在寻找一个命令,它涉及
snap
而不是重新发明轮子并使用基于内部的一些独立的外部命令snap
。 - 我在 AskUbuntu 上问这个问题,因为我只
snap
在 Ubuntu 上使用
答案1
snap 是一个应用程序分发和安装的系统。以 snap 形式安装的程序产生的进程与系统上运行的任何其他软件的进程没有区别,因此管理方式相同。
换句话说,与以 snap 形式安装的软件相关的进程没有任何特定之处。每个软件包都会导致启动一个或多个进程。这些进程是特定于软件的。
因此,对于“如何停止 snap 软件包的进程”这个问题,无法给出一般性的答案。如果您省略“snap”一词,此评论同样适用。因此,实际上,只有针对特定软件才有可能给出特定答案。
答案2
如果 snap 因为有正在运行的进程而拒绝刷新某些内容,你可以通过运行以下命令来准确找出它们:
# snap refresh my-awesome-app
如果有正在运行的进程,它将做出类似如下的响应:
error: cannot refresh "my-awesome-app": snap "my-awesome-app" has running apps (my-awesome-app), pids:
1210273,1210277,1210278
你可以杀死他们:kill 1210273 1210277 1210278
此后,请再试snap refresh
一次。