如何在bash中结束正在运行的进程 - 例如,假设我打开了一个文件:
$ gedit file.txt
有没有办法在命令提示符内关闭它?这个例子很简单,因为我可以关闭窗口,但是这种情况似乎经常发生,特别是当我输入命令时出错。
另外,有没有办法终止正在运行的可执行文件?这可能有相同的解决方案,但我还是想问一下。
谢谢
如何在bash中结束正在运行的进程 - 例如,假设我打开了一个文件:
$ gedit file.txt
有没有办法在命令提示符内关闭它?这个例子很简单,因为我可以关闭窗口,但是这种情况似乎经常发生,特别是当我输入命令时出错。
另外,有没有办法终止正在运行的可执行文件?这可能有相同的解决方案,但我还是想问一下。
谢谢
你有多种选择:
首先,你可以使用kill。但是你需要知道你的进程的pid,可以通过使用ps、pidof或pgrep来获取。
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" 命令时加上该选项。请阅读控制进程这篇文章,了解更多关于进程的信息。killall
。在Solaris上,killall
会终止所有活动进程。我建议使用kill
或pkill
。 - David Narayan要中断它,可以尝试按下ctrlc发送SIGINT信号。如果无法停止它,您可以尝试使用kill -9 <pid>
来结束它,该命令会发送一个SIGKILL信号。后者不能被进程本身(即被终止的进程)忽略/拦截。
要将活动进程移至后台,可以按下ctrlz。进程将被发送到后台,然后您将返回到shell提示符。使用fg
命令执行相反操作。
kill -9 %
命令结束它。 - luatorkill -9 %
命令杀掉进程完美解决了问题! - Qasim尝试使用kill -9 {processID}
命令。
要找到进程ID,可以使用ps -ef | grep gedit
命令。
虽然这篇文章有些年头了,但我最近也遇到了类似的问题。经过一番尝试,我发现你可以通过一个单独的命令来解决:
kill $(ps aux | grep <process_name> | grep -v "grep" | cut -d " " -f2)
<process_name>
将是"gedit file.txt"
。pkill -9 -e -f processname
您可以使用命令pkill来终止进程。如果您想要“玩一下”,可以使用“pgrep”,它的工作方式完全相同,但是返回进程而不是终止它。
pkill具有-f参数,允许您与整个命令匹配。因此,对于您的示例,您可以执行以下操作:pkill -f“gedit file.txt”
我不清楚你所说的“逃脱正在运行的可执行文件”是什么意思,但是ctrl-z可以将进程放到后台并返回控制命令行。然后,您可以使用fg命令将程序带回前台。
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