O spooler de tarefas pode ajudá-lo.
Como no freshmeat.net :
O spooler de tarefas é um sistema em lote Unix onde as tarefas em spool são executadas uma após a outra. A quantidade de trabalhos a serem executados ao mesmo tempo pode ser definida a qualquer momento. Cada usuário em cada sistema tem sua própria fila de tarefas. As tarefas são executadas no contexto correto (o de enfileiramento) a partir de qualquer shell / processo, e sua saída / resultados podem ser facilmente observados. É muito útil quando você sabe que seus comandos dependem de muita RAM, muito uso de disco, produzem muita saída ou, por qualquer motivo, é melhor não executá-los todos ao mesmo tempo, enquanto você deseja manter seus recursos ocupados para o máximo benefício. Sua interface permite usá-lo facilmente em scripts.
O spooler de tarefas está disponível no Debian , Ubuntu e outras distribuições.
Ele permite que você tenha uma fila de tarefas para executar e acesse as saídas apenas quando 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ê executar muitos trabalhos em segundo plano, isso definitivamente o ajudará.
Você pode executá-los sequencialmente ou em uma quantidade predefinida de slots. Você também pode estabelecer dependências entre as tarefas (executar task1 somente se task0 concluída com êxito).
Raúl Salinas-Monteagudo
fonte
O redirecionamento da saída do comando parece irrelevante porque a notificação é enviada pelo shell quando um trabalho é iniciado de forma assíncrona. Mais precisamente, é um recurso de shell (funcionalidade) relacionado ao controle de tarefas .
Aqui, uma citação que vem do "Bash Reference Manual", capítulo "Job Control", seção um.
Observe que um script de shell não exibe esta notificação.
Em fatos
Zsh
A documentação do Zsh fornece indicações semelhantes sobre essas notificações, consulte a
man 1 zshmisc
seção "TRABALHOS". Essas notificações não são exibidas quando o controle de trabalho está desativado.Bater
Parece que o Bash sempre exibe, por exemplo
[1] 25647
. A "notificação final", por exemplo,[1]+ Done true
não é exibida quando o controle do trabalho está desativado.Controle de trabalho desativado
Conclusão
Não sei se desabilitar o controle do trabalho para ocultar as notificações é uma coisa boa?
Recursos
man 1 zshmisc
, seção TRABALHOS.man 1 zshoptions
.fonte
Você pode chamar
zsh
como um shell não interativo para desativar as notificações de trabalho.fonte
Veja o seguinte exemplo:
Isso funciona bem. Não há necessidade
( )
: isso cria um subshell não necessário.{ }
são apenas comandos de agrupamento.fonte
[2] 49591
e[2] + 49591 exit 1 find /usr
, quando não deve ser impresso!Esta é uma pergunta antiga, mas uma resposta possível (no bash, não testada com zsh) é usar o controle de tarefa no subshell:
(command & wait)
Nota: o bash suprime as mensagens de trabalho em segundo plano de início / fim no subshell e não há necessidade de redirecionamento.
fonte
(sleep 5 & wait)
atrasa 5 segundos.