精准击杀

精准击杀

在 Ubuntu Oneiric 版本上尝试安装 radiotray 几次后,另一位用户发现问题出在软件源设置上。现在我想再次执行 radio tray 的安装,apt-get却无法等待适用于 radiotray 的软件包。甚至无法在系统监视器中结束该进程。

我已经注销了,但并没有杀死它,可能重启就可以了。还有其他方法可以apt-get在等待软件包下载时停止运行吗?

答案1

首先,获取正在运行的 apt-get 的进程 ID (pid):

ps ax | grep apt-get

然后根据进程号 (pid) 终止该进程:

sudo kill -9 [pid]

或者使用htop,它列出您的流程并使您能够发送各种信号。

答案2

精准击杀

通过系统监视器查找进程 ID,htop通过 grepping 查找ps,随便什么都可以(我更喜欢pgrep -l,见下文)。假设这次是 4536。然后将其杀死:

kill -9 4536

散弹枪式方法

pkill -9 apt-get

这将杀死任何以某种方式匹配“apt-get”模式的进程。您不必查找进程号。这对应于以下进程:

pgrep -l apt-get

-l选项将输出从仅进程编号更改为编号 + 名称。这很好,因为您可以在开始之前自行检查。也许您在运行时pkill -9 nuke不小心杀死了该进程the-only-thing-preventing-nukelear-world-war

-9 是什么鬼?

通常情况下,杀死类似这样的程序killpkill让你处于达斯·维达与欧比旺战斗的位置。维达想要杀死本,本承认维达的愿望,本在任务完成后优雅地接受死亡。这与使用该选项相同-15

但有时进程并不想死。或者它们很乐意死掉,只要它们完成这件小事就行。但你需要它们现在就死掉,而不是等它们方便的时候。所以你使用这个-9选项。

为什么它一直挂着?

  • 可能是其他进程在干扰。可能是 update、synaptic、apt 或其他类似的进程。逐个终止所有这些进程,每次终止后重试 apt-get 命令。最坏的情况是,您终止了一个重要进程,然后必须重新启动。如果您正坐在沙发上使用 Ubuntu 笔记本电脑,情况还不算太糟,但如果您远程连接到全国各地的服务器,情况就糟了。

  • 也许您更改了更新源,但 apt-get 尚未收到备忘录。运行sudo apt-get update。但首先确保没有任何干扰进程。

我没有权限杀死任何东西:|

如果您不拥有该系统,那就太难了。但是如果您拥有该系统,请sudo在每个命令前使用,如下所示:sudo pkill -9 process-i-hate。我故意没有为您添加 sudos,因为您不应该不考虑二进制受害者就杀死它。

来源

man kill
man grep
man pkill
man pgrep
man ps

相关内容