task-spooler pode ajudá-lo.
Como em freshmeat.net :
task spooler is a Unix batch system where the tasks spooled run one after the other. The amount of jobs to run at once can be set at any time. Each user in each system has his own job queue. The tasks are run in the correct context (that of enqueue) from any shell/process, and its output/results can be easily watched. It is very useful when you know that your commands depend on a lot of RAM, a lot of disk use, give a lot of output, or for whatever reason it's better not to run them all at the same time, while you want to keep your resources busy for maximum benfit. Its interface allows using it easily in scripts.
O spooler de tarefas está disponível em Debian , no Ubuntu e em outras distribuições.
Ele permite que você tenha uma fila de tarefas para executar e acesse suas saídas exatamente como desejar.
Por exemplo:
$ tsp sleep 5
0
$ tsp sleep 5
1
$ tsp
ID State Output E-Level Times(r/u/s) Command [run=1/1]
2 running /tmp/ts-out.ZWn6Le sleep 5
1 finished /tmp/ts-out.Fhlcle 0 5.00/0.00/0.01 sleep 5
Se você tiver muitos trabalhos em segundo plano, isso definitivamente ajudará você.
Você pode executá-los sequencialmente ou em uma quantidade predefinida de slots. Você também pode estabelecer dependências entre as tarefas (executar tarefa1 somente se tarefa0 for concluída com êxito).