Eu obtive o que precisava com essa resposta:
Acontece que usar wait <pid>
só funcionará se esse pid for um processo filho do processo atual.
No entanto, os itens a seguir funcionarão para qualquer processo:
Para esperar por qualquer processo terminar
Linux:
tail --pid=$pid -f /dev/null
Darwin (requer que $pid
tenha arquivos abertos):
lsof -p $pid +r 1 &>/dev/null
Com tempo limite (segundos)
Linux:
timeout $timeout tail --pid=$pid -f /dev/null
Darwin (requer que $pid
tenha arquivos abertos):
lsof -p $pid +r 1m%s -t | grep -qm1 $(date -v+${timeout}S +%s 2>/dev/null || echo INF)