Em bash e a maioria dos shells, ao contrário de zsh ,
cmd1 || cmd2 &
é como:
{ cmd1 || cmd2; } &
Então é esse subshell executando cmd1 || cmd2 que é iniciado em segundo plano.
bash não otimiza executando cmd2 no processo subshell, e é por isso que você vê dois processos: o processo bash e cmd2 . O processo bash está aguardando apenas que cmd2 termine. Observe que o shell de chamada não está bloqueado. O único "problema" é esse processo de subconsumo desnecessário extra e o fato de que cmd1 também é executado em segundo plano.
Uso:
cmd1 || { cmd2 &}
Ou mais legivelmente:
if ! cmd1; then
cmd2 &
fi
Se você quiser que apenas cmd2 seja executado em segundo plano.