我使用以下命令在linux上并行运行两个python脚本
python program01.py & python program02.py
当我使用键盘快捷键时,例如&c; ctrl + c'为了阻止它们,它只关闭命令中最后一个程序(例如这里是' program02.py'),另一个保持打开/运行。
我需要知道如何使用键盘命令一次关闭所有这些命令,因为当只有键盘命令可以使用时,我需要所有这些命令继续运行。
答案 0 :(得分:2)
当您在结束时使用&
运行程序时,它将在后台运行。要终止所有后台作业,请使用jobs -p | xargs kill -9
命令。没有bash快捷方式。
在这种情况下,您可能希望将命令运行为:
python program01.py & python program02.py &
答案 1 :(得分:1)
没有这样的捷径,但你可以做一些:
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来杀死前台进程时,你就不会意外地做到这一点。
答案 2 :(得分:0)
这是一个启动虚拟线程的示例代码,当虚拟线程检测到任何键盘输入时,它将突破任何循环。我发现这是一个可靠的方法来阻止程序,当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