Python 停止并行运行的所有程序的快捷键?

Python 停止并行运行的所有程序的快捷键?,python,linux,shell,parallel-processing,Python,Linux,Shell,Parallel Processing,我使用以下命令在linux上并行运行两个python脚本 python program01.py & python program02.py 当我使用像“ctrl+c”这样的键盘快捷键来停止它们时,它只会关闭命令中最后一个程序(例如,这里是“program02.py”),而另一个保持打开/运行 我需要知道如何使用键盘命令一次关闭所有这些命令,因为有时我需要所有这些命令都保持运行,而只有键盘命令可以使用。当您在最后运行带有&的程序时,它会在后台运行。要杀死所有后台作业,请使用jobs-p

我使用以下命令在linux上并行运行两个python脚本

python program01.py & python program02.py
当我使用像“ctrl+c”这样的键盘快捷键来停止它们时,它只会关闭命令中最后一个程序(例如,这里是“program02.py”),而另一个保持打开/运行


我需要知道如何使用键盘命令一次关闭所有这些命令,因为有时我需要所有这些命令都保持运行,而只有键盘命令可以使用。

当您在最后运行带有
&
的程序时,它会在后台运行。要杀死所有后台作业,请使用
jobs-p | xargs kill-9
命令。这没有bash的捷径

在这种情况下,您可能希望以以下方式运行命令:

python program01.py & python program02.py &

没有这样的捷径,但你可以做一些:

trap 'kill -INT $(jobs -p) &> /dev/null' INT
.bashrc
中,命令行上的Ctrl+C将中断所有后台作业

这意味着您可以按Ctrl+C组合键终止前台进程,然后再次按Ctrl+C组合键终止任何后台进程

或者

bind '"\C-b": "\nkill $(jobs -p)\n"'

将允许您使用Ctrl+B终止所有后台作业,这样您就不会在疯狂地按Ctrl+C终止前台进程时意外地执行此操作。

这是启动虚拟线程的示例代码,当虚拟线程检测到任何键盘输入时,它将中断任何循环。我发现这是一种可靠的方法,可以在control-C不工作时停止程序,但我相信有更好的解决方案

import thread
def input_thread(L):
    raw_input()
    L.append(None)
dummykeypress = []
thread.start_new_thread(input_thread, (dummykeypress,))
while True:
    if dummykeypress: break  # or exit() to kill entire program, etc

我总是创建一个单独的虚拟线程来查找任何按键,并终止程序。Control-C并不总是起作用。但是,我不知道这是否能同时适用于两个程序。请举例说明,关于这一点,您将如何创建单独的虚拟线程?默认为
-9
是个坏主意。仅当进程不响应sigterm时才应使用它。虽然此方法有效,但我仍然想知道,为什么/how-9是个坏主意?
-9
立即终止应用程序,而不给它响应、保存文件或退出时应用程序应该做什么的机会。