Isso geralmente acontece se o processo tentar ler seu fluxo stdin
. Quando o processo está em segundo plano, ele recebe um sinal TTIN e, portanto, é congelado (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 que ele leia a partir do seu terminal.
Demo:
$ cat t.sh
#! /bin/sh
sleep 1
read dummy
$ ./t.sh &
[1] 3364
$
[1]+ Stopped ./t.sh
$ ps aux|grep t.sh
me 3364 0.0 0.0 11268 1200 pts/0 T 17:04 0:00 /bin/sh ./t.sh
Uma das formas de evitar isso é usar nohup
, mas isso pode ter efeitos estranhos se o programa não lida com o fluxo de entrada redirecionado para /dev/null
.