我想杀掉 Python 解释器 - 意图是让所有正在运行的 Python 文件停止(没有任何关于这些文件的信息)。 显然,这些进程应该被关闭。
任何删除 Python 文件或销毁解释器的想法都可以 :D(我正在使用虚拟机)。 我需要从终端进行操作,因为我编写 C 代码并使用 Linux 命令... 希望获得帮助
pkill -9 python
应该杀掉所有正在运行的Python进程。
有一种相当粗糙的方法可以做到这一点,但要小心,因为首先,这依赖于Python解释器进程将自己标识为python,其次,它还会导致任何其他被标识为该名称的进程也被终止。
简而言之,您可以通过在Shell中输入以下内容来终止所有Python解释器(确保您阅读了上面的警告!):
ps aux | grep python | grep -v "grep python" | awk '{print $2}' | xargs kill -9
为了解释这段代码是如何工作的。首先,ps aux | grep python | grep -v "grep python"
获取了所有调用自己为python的进程列表,其中grep -v确保你刚刚运行的grep命令不会出现在输出中。接下来,我们使用awk获取输出的第二列,即进程ID。最后,通过向每个进程提供kill -9
命令,不太正式地终止了这些进程。pkill
的使用方法和脚本路径
pkill -9 -f path/to/my_script.py
该方法是一种简短且有选择性的方式,更可能只会杀死运行给定脚本的解释器。
另请参阅:https://unix.stackexchange.com/questions/31107/linux-kill-process-based-on-arguments
pgrep -f <your process name> | xargs kill -9
这将会结束你的进程服务。 在我的情况下,它是
pgrep -f python | xargs kill -9
pgrep -f youAppFile.py | xargs kill -9
pgrep
命令返回特定文件的 PID,只会杀死特定应用程序。
我看到了pkill
命令作为最佳答案。虽然这很好,但我仍然试图小心谨慎(因为在杀死进程时可能会冒着风险),并遵循以下方法:
首先使用以下命令列出所有Python进程:
$ ps -ef | grep python
只是想看看之前有哪些根用户进程在运行,并在之后交叉检查,看它们是否仍在运行(在我完成后!:D)
然后使用pgrep
:
$ pgrep -u <username> python -d ' ' #this gets me all the python processes running for user username
# eg output:
11265 11457 11722 11723 11724 11725
ps -ef| ...
的输出进行交叉检查后,使用kill
命令终止这些进程。kill -9 PID1 PID2 PID3 ...
# example
kill -9 11265 11457 11722 11723 11724 11725
pgrep -u root python -d ' '
并通过从ps -ef|...
输出进行验证
ps auxww | grep 'python3' | awk '{print $2}' | xargs kill -9
在使用Ubuntu 20.04.2时,终止Python脚本的方法是同时按下 Ctrl + D,而不是 Ctrl+C
-9
是干什么的吗?我找不到它的用处。 - mgus-9
设置信号为SIGKILL
, 其他信号包括: SIGHUP-1
挂起信号。 SIGINT-2
键盘中断信号。 SIGKILL-9
终止进程的信号。 SIGTERM-15
终止信号。 SIGSTOP-17, -19, -23
停止进程。 - MrBlenny