在bash中杀死一个进程

时间:2010-05-05 16:22:45

标签: bash

如何杀死在bash中运行的进程 - 例如,假设我打开一个文件:

  

$ gedit file.txt

在命令提示符下有什么方法可以关闭它吗?这个例子相当简单,因为我可以关闭窗口,但它似乎有点出现,特别是当我输错命令时。

还有什么方法可以逃避正在运行的可执行文件吗?这可能有相同的解决方案,但我想我还是会问。

由于

8 个答案:

答案 0 :(得分:69)

您有多种选择:

首先,您可以使用kill。但是您需要使用pspidofpgrep来获取流程的pid。

ps -A  // to get the pid, can be combined with grep
-or-
pidof <name>
-or-
pgrep <name>

kill <pid>

可以通过知道名称来杀死进程。使用pkillkillall

pkill <name>
-or-
killall <name>

所有命令都向进程发送信号。如果进程挂起,可能需要向进程发送sigkill(这是信号9,因此以下示例也是如此):

pkill -9 <name>
pkill -SIGKILL <name>

您也可以将此选项与killkillall一起使用。

阅读这篇关于controlling processes的文章,以获得有关流程的更多信息。

答案 1 :(得分:45)

要中断它,您可以尝试按 ctrl c 发送SIGINT。如果它没有停止它,你可以尝试使用发送SIGKILL的kill -9 <pid>来终止它。后者不能被进程本身(被杀死的人)忽略/拦截。

要将活动进程移至后台,可以按 ctrl z 。该进程将发送到后台,您将返回到shell提示符。使用fg命令执行相反的操作。

答案 2 :(得分:8)

尝试kill -9 {processID}

要查找进程ID,您可以使用ps -ef | grep gedit

答案 3 :(得分:4)

旧帖子,但我遇到了一个非常类似的问题。经过一些实验,我发现你可以用一个命令来做到这一点:

kill $(ps aux | grep <process_name> | grep -v "grep" | cut -d " " -f2)

在OP的情况下,<process_name>将是"gedit file.txt"

答案 4 :(得分:4)

这个是谨慎使用的暴力:

pkill -9 -e -f processname 

如果您的流程名称是&#34; sh&#34;它也会杀死&#34; bash&#34;

答案 5 :(得分:1)

您可以使用命令pkill来终止进程。如果你想“玩转”,你可以使用“pgrep”,它的工作方式完全相同但返回过程而不是杀死它。

pkill具有-f参数,允许您匹配整个命令。因此,对于您的示例,您可以:pkill -f“gedit file.txt”

答案 6 :(得分:0)

我不清楚“逃避正在运行的可执行文件”是什么意思,但ctrl-z会将进程放入后台并将控制权返回给命令行。然后,您可以使用fg命令将程序恢复到前台。

答案 7 :(得分:0)

请检查&#34; top&#34;命令然后如果您的脚本或任何正在运行的脚本请注意&#39; PID&#39;

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1384 root      20   0  514m  32m 2188 S  0.3  5.4  55:09.88 example
14490 root      20   0 15140 1216  920 R  0.3  0.2   0:00.02 example2



kill <you process ID>

Example : kill 1384