Если вы работаете в системе GNU/Linux или у вас установлены coreutils, используйте flock (1)(возможно, используя сам исполняемый файл/команду в качестве файла блокировки):
% cat linger
echo -n $$; date +%s; sleep $1
% flock./linger./linger 8 &
[3] 5941
% 59421598557788
% flock./linger./linger 9 &
[4] 5945
% flock./linger./linger 11 &
[5] 5946
% 59471598557796
59501598557805
[3] Done flock./linger./linger 8
[4] Done flock./linger./linger 9
[5] Done flock./linger./linger 11
То, что вы пытаетесь сделать, не работает, потому что для оболочки остановка команды равносильна ее немедленному завершению с не -нулевым (статусом сбоя ):
% sleep 10 || echo FAIL
^Z
[3]+ Stopped sleep 10
FAIL
% fg
sleep 10
% echo $?
0