Coloque seu comando inteiro, incluindo o &
, entre parênteses:
(prompt)$
gvim 1 &
[3] 9584
(prompt)$ some other command[3] Done gvimBackground 1
(prompt)$(gvim 1 &
)
<– (silence)
(prompt)$
Quando executo um processo em segundo plano, o ID do processo é exibido no prompt de comando. Por exemplo:
$ gvim 1 &
[3] 9584
Agora, quando executo outro processo, o estado do anterior também é exibido. Por exemplo:
$ gvim 2 &
[4] 9500
[3] Done gvimBackground 1
Existe alguma maneira de suprimir a exibição do PID atual e dos dados relacionados aos processos anteriores?
Coloque seu comando inteiro, incluindo o &
, entre parênteses:
(prompt)$
gvim 1 &
[3] 9584
(prompt)$ some other command[3] Done gvimBackground 1
(prompt)$(gvim 1 &
)
<– (silence)
(prompt)$
Não é tanto que o status de outros trabalhos seja relatado quando você inicia um novo, mas que as alterações de status são, por padrão, relatadas apenas antes que um prompt seja exibido. Então, no seu caso, é relatado na primeira oportunidade, que está no prompt exibido depois que você inicia seu segundo trabalho.
Você pode tornar o relatório de trabalho síncrono emitindo:
set -b
Nesse caso, os relatórios sobre conclusão ou suspensão ... de tarefas em segundo plano são feitos assim que isso acontece e você não precisa aguardar o próximo prompt.
Se você não quiser ser notificado sobre a conclusão de um trabalho, como o @Scott diz, você pode iniciá-lo como um trabalho de um subshell (job &)
ou disown
usando o comando disown
(ou com zsh, inicie-o como job &!
), mas observe que isso significa que você não pode colocá-lo em primeiro plano ou matá-lo usando um número de trabalho.
Tags bash job-control shell