bash 等待特定进程结束
这是我写的某个测试的脚本:
- B 需要等待 A 程序先运行起来之后才能启动。
- A 退出之后,应该中止 B。
- 代码能保证 B 不会在 A 之前中止。
#!/bin/bash
./build/test/A -n 5000 &
PROC_A=$!
sleep 3
python test/B.py &
PROC_B=$!
tail --pid=$PROC_A -f /dev/null
kill $PROC_B
tail --pid=$PROC_A -f /dev/null
这一句是等待特定进程结束的关键。参考 https://stackoverflow.com/questions/1058047/wait-for-a-process-to-finish 。
(不过,这个脚本还有一个问题,当脚本收到 ^C
中止时,如果 shell 还在,那么两个进程会因为是后台进程而无法收到中止信号。这下大家都知道我写的测试很垃圾了>﹏<。)