杀死在 bash 中同时运行的两个命令

杀死在 bash 中同时运行的两个命令

我想在 bash 脚本中同时运行两个命令(其中一个是另一个 bash 脚本),并且我需要在按 Ctrl+C 时停止这两个命令。我的 bash 脚本现在是:

#!/bin/bash

./command1 &

exec "/path/to/bash2" 

在 bash2 中:

#!/bin/bash

[..]
python run.py

我应该添加一个陷阱来杀死这两个命令吗?如果是这样,在 bash 中添加以下内容没有帮助

trap killgroup SIGINT

killgroup(){
  echo killing...
  kill 0
}

答案1

尝试执行此操作以确保您kill使用的是正确的 PID:

./command1 &
childpid=$!
trap "kill -TERM ${childpid}" EXIT

答案2

GNU Parallel 尊重 ctrl-c。所以你可以运行:

parallel ::: ./command1 /path/to/bash2

相关内容