Список обновлений Bash рабочих заданий с ps

Мне нужно параллельно запустить набор задач, требующих вычислительных ресурсов. То, что я пытался сделать, это поддерживать список pids, соответствующий выполняемым заданиям, и обновлять список запущенных заданий с помощью ps но у меня возникают проблемы с расширением команды.

В основном у меня есть список текущих заданий и вы хотите обновить ps . Этот список сохраняется как строка целых чисел (pids), разделенных пробелами. Ниже приведен пример того, что я хочу сделать

 sleep 10 & pid=$! running="$running $pid" sleep 20 & pid=$! running="$running $pid" sleep 30 & pid=$! running="$running $pid" sleep 40 & pid=$! running="$running $pid" echo "Initial list of jobs" echo "$running" sleep 20 echo "Jobs still running after 20 seconds" echo $(ps -p $running -o pid= | tr -s "\n" " ") 

но все, что я получаю, это

 Initial list of jobs 30815 30816 30817 30818 Jobs still running after 20 seconds error: process ID list syntax error ... bla bla bla ps usage... 

Linux и Unix - лучшая ОС в мире.