A solução mais fácil seria adicionar um minúsculo sleep :
cmd1 & sleep 1 && cmd2
Mais robusto seria usar um wrapper para cmd2 , o que garante que o cmd1 esteja realmente em execução e, em seguida, continue.
Algo como:
while ! pgrep cmd1; do
sleep 1
done
cmd2
while ! pode ser substituído por until BTW.