Com base no que você está descrevendo, parece que há algo fundamentalmente errado com o PROCESS2 que está causando a saída dele. Se eu modelar o que você está descrevendo com 3 processos, ele funcionará principalmente como seria de se esperar quando você fizer o background dos 3 processos e, em seguida, capturar e passar o PID do 2o processo para processar 3.
Exemplo
script de exemplo$ cat runny.bash
#!/bin/bash
proc3func() {
echo $1
sleep 7 &
}
sleep 9 &
sleep 8 &
PID2=$!
proc3func ${PID2} &
exemplo executado
$ ./runny.bash ; sleep 2; ps -eaf
4279
UID PID PPID C STIME TTY TIME CMD
...
vagrant 4278 1 0 20:21 pts/1 00:00:00 sleep 9
vagrant 4279 1 0 20:21 pts/1 00:00:00 sleep 8
vagrant 4282 1 0 20:21 pts/1 00:00:00 sleep 7
Na saída acima, podemos ver o PID, 4279 sendo ecoado na tela, seguido pela saída de ps -eaf
, que mostra nossos 3 processos.
Depuração
Sugiro ativar set -x
para que você possa seguir os comandos que estão sendo executados ao executar o script ou executá-lo da seguinte forma:
$ bash -x ./runny.bash
+ PID2=4612
+ sleep 9
+ sleep 8
+ proc3func 4612
+ echo 4612
4612
+ sleep 7