Às vezes, algum tempo depois de ter passado um processo bg
em segundo plano no bash, quando pressiono Enter no mesmo shell para exibir novamente o prompt (apenas para verificar se ainda estou no bash quando alguma saída do processo em segundo plano foi exibida), o processo em segundo plano parece parar espontaneamente.
Se eu fizer bg
novamente, o mesmo problema se repete.
A única maneira de corrigi-lo parece ser fg
.
Por que isso acontece?
terminal
io
job-control
background-process
Robin Green
fonte
fonte
Respostas:
Isso geralmente acontece se o processo tentar ler seu
stdin
fluxo. Quando o processo está em segundo plano, ele recebe um sinal TTIN e, portanto, é congelado (o mesmo comportamento de um sinal STOP). Há também o sinal duplo TTOU quando um processo em segundo plano tenta gravar em seu terminal.Trazê-lo para o primeiro plano retoma o processo e permite a leitura no seu terminal.
Demo:
Uma das maneiras de evitar isso é usar
nohup
, mas isso pode ter efeitos estranhos se o programa não lidar com o redirecionamento do fluxo de entrada/dev/null
.fonte