![杀死在 bash 中同时运行的两个命令](https://linux22.com/image/110832/%E6%9D%80%E6%AD%BB%E5%9C%A8%20bash%20%E4%B8%AD%E5%90%8C%E6%97%B6%E8%BF%90%E8%A1%8C%E7%9A%84%E4%B8%A4%E4%B8%AA%E5%91%BD%E4%BB%A4.png)
我想在 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