As soluções de Brad e Mankoff são boas sugestões. Outro que é semelhante a uma combinação dos dois seria usar o GNU Screen para implementar sua fila. Isso tem a vantagem de poder ser executado em segundo plano, você pode verificá-lo sempre que, e enfileirar novos comandos apenas os cola no buffer para serem executados após a saída dos comandos anteriores.
Primeira corrida:
$ screen -d -m -S queue
(aliás, agora é uma boa hora para brincar com alguns arquivos impressionantes. screenrc )
Isso gerará uma sessão de tela em segundo plano para você chamada fila.
Agora, coloque na fila quantos comandos desejar:
screen -S queue -X stuff "echo first; sleep 4; echo second^M"
Estou executando vários comandos no exemplo acima apenas para teste. Seu caso de uso provavelmente seria mais parecido com:
screen -S queue -X stuff "echo first^M"
screen -S queue -X stuff "echo second^M"
Observe que o "^ M" na minha linha acima é uma maneira de obter uma nova linha incorporada que será interpretada posteriormente depois que a tela a inserir no shell bash existente. Use "CTL-V" para obter essa sequência.
Seria muito fácil criar alguns scripts shell simples para automatizar isso e enfileirar comandos. Em seguida, sempre que desejar verificar o status da sua fila de segundo plano, reconecte-o via:
screen -S queue -r
Tecnicamente, você nem precisa nomear sua sessão de tela e ela funcionará bem, mas depois que você ficar viciado nela, você vai querer deixar uma funcionando o tempo todo. ;-)
Obviamente, se você fizer isso, outra boa maneira de fazer isso seria nomear uma das janelas atuais como "fila" e usar:
screen -S queue -p queue -X stuff "command"