如何在调用Bash脚本中断时终止Python后台进程

ogsagwnx  于 2023-06-04  发布在  Python
关注(0)|答案(1)|浏览(235)

我有一个Python脚本(test.py),如下所示:

try:
    while True:
        print("test: {}".format(argv[1]))
    
        time.sleep(1)
except KeyboardInterrupt:
    print("process terminated!")

所以我可以通过键入Ctrl-c来停止程序。
现在我需要使用不同的参数执行多个test.py示例。因此,我使用Bash脚本并行运行多个Python调用,如下所示:

#!/bin/bash

export PYENV="/home/AA/.venv/env1/bin/python3"

cd /home/AA/test
sudo $PYENV test.py 1 &
sudo $PYENV test.py 2 &

wait

问题是:当我想通过键入“ctrl+C”来终止进程(包括Python进程)时,它不起作用。
如何通过键入“ctrl+C”终止这些后台进程?

ql3eal8s

ql3eal8s1#

当按下CTRL-C时,这不会激活异常,但可能已经足够好了:

export PYENV="/home/AA/.venv/env1/bin/python3"

cd /home/AA/test
doit() { sudo $PYENV test.py "$1"; }
export -f doit

parallel -u doit ::: 1 2

相关问题