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

2024-03-28 14:13:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

python program01.py & python program02.py

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

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


Tags: py命令程序脚本linux状态键盘快捷键
3条回答

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

trap 'kill -INT $(jobs -p) &> /dev/null' INT

在您的.bashrc中,命令行上的Ctrl+C将中断所有后台作业。在

这意味着您可以按Ctrl+C来终止前台进程,然后再按Ctrl+C来终止任何后台进程。在

或者

^{pr2}$

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

当您运行结尾为&的程序时,它在后台运行。要终止所有后台作业,请使用jobs -p | xargs kill -9命令。这没有bash的捷径。在

在这种情况下,您可以根据需要运行命令:

python program01.py & python program02.py &

这是一个启动虚拟线程的示例代码,当虚拟线程检测到任何键盘输入时,它将跳出任何循环。我发现这是在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

相关问题 更多 >