如何杀死在bash中运行的进程 - 例如,假设我打开一个文件:
$ gedit file.txt
在命令提示符下有什么方法可以关闭它吗?这个例子相当简单,因为我可以关闭窗口,但它似乎有点出现,特别是当我输错命令时。
还有什么方法可以逃避正在运行的可执行文件吗?这可能有相同的解决方案,但我想我还是会问。
由于
答案 0 :(得分:69)
您有多种选择:
首先,您可以使用kill。但是您需要使用ps,pidof或pgrep来获取流程的pid。
ps -A // to get the pid, can be combined with grep
-or-
pidof <name>
-or-
pgrep <name>
kill <pid>
可以通过知道名称来杀死进程。使用pkill或killall。
pkill <name>
-or-
killall <name>
所有命令都向进程发送信号。如果进程挂起,可能需要向进程发送sigkill(这是信号9,因此以下示例也是如此):
pkill -9 <name>
pkill -SIGKILL <name>
您也可以将此选项与kill
和killall
一起使用。
阅读这篇关于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