![BASH:将程序的存在绑定到另一个程序](https://linux22.com/image/583533/BASH%EF%BC%9A%E5%B0%86%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%AD%98%E5%9C%A8%E7%BB%91%E5%AE%9A%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%A8%8B%E5%BA%8F.png)
我想创建一个运行两个程序的脚本。这部分很简单,但有一个问题:如果第一个程序退出,我想终止第二个程序。我该怎么做?
编辑
我尝试在另一个程序退出后通过其 PID 终止该程序,但该程序是hamster-time-tracker
Python 应用程序,它会立即退出,显然会产生另一个进程。我该如何解决这个问题?有没有办法让另一个 PID 产生?
编辑2
搞清楚了。我必须运行python /usr/bin/hamster-time-tracker
而不是hamster-time-tracker
,它才能继续运行。
答案1
#!/bin/bash
cmd-a &
a=${!}
cmd-b &
b=${!}
wait $a
kill $b
在测试这个时我使用yes a
和yes b
作为命令。
答案2
有等待bash 中的命令等待第一个应用程序终止,然后终止第二个应用程序。
由于等待会在不以 & 结尾的命令后自动插入,因此正确的顺序可以避免您陷入手动等待的麻烦:
A &
B # waits
kill $! # then kills A