停止所有并行运行程序的快捷键是什么?
我在Linux上用以下命令同时运行两个Python脚本
python program01.py & python program02.py
当我使用像'ctrl+c'这样的快捷键来停止它们时,只有最后一个运行的程序(比如这里的'program02.py')会被关闭,另一个程序仍然在运行。
我想知道怎么才能通过一个键盘命令同时关闭所有程序,因为有时候我需要它们都在运行,而只能用键盘命令来操作。
3 个回答
0
这是一个示例代码,用来启动一个虚拟线程。当这个虚拟线程检测到任何键盘输入时,它会跳出任何循环。我发现这种方法在控制+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
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
当你在程序后面加上&
时,这个程序会在后台运行。要结束所有后台的任务,可以使用jobs -p | xargs kill -9
这个命令。不过,bash没有快捷方式可以做到这一点。
在这种情况下,你可能想要这样运行你的命令:
python program01.py & python program02.py &