Se você realmente tem um trabalho em primeiro plano, o bash aguarda a conclusão, que é mais ou menos a definição de um trabalho em primeiro plano . Se o bash ainda tiver o controle do terminal, verifique o que está acontecendo jobs -l
, por exemplo:
$ ncat -kl -p 10111 &
[1] 13404
$ ncat -kl -p 10222 &
[2] 13405
$ ncat -kl -p 10333 &
[3] 13406
$ jobs -l
[1] 13404 Running ncat -kl -p 10111 &
[2]- 13405 Running ncat -kl -p 10222 &
[3]+ 13406 Running ncat -kl -p 10333 &
Comecei três ncat
processos de escuta em segundo plano para isso. Você também pode ver "Concluído" ou "Parado" para um status de trabalho.
Você pode efetivamente colocar em segundo plano um trabalho em primeiro plano a partir de um shell diferente usando o método SIGSTOP / SIGCONT de Stefan Seidel (embora o sinal real enviado por um shell com Ctrl- Zseja SIGTSTP, ambos os sinais devem funcionar).
Há uma distinção sutil entre processos e tarefas quando os termos primeiro plano e plano de fundo são usados. Há apenas um trabalho em primeiro plano do shell , pode haver vários processos em primeiro plano (isso está relacionado aos IDs do grupo de processos do terminal e pode ser observado quando você inicia dois ou mais processos em um pipeline).
Um processo em execução ou pipeline sob o controle do shell é chamado de "trabalho", quando você usa o comando bg
ou, fg
está implicitamente se referindo ao trabalho mais recente - no meu caso, o que está +
acima. Esses trabalhos também podem (entre outras coisas) ser explicitamente referidos como% 1% 2 ou% 3 (o número em []
).
Um fg
comando não qualificado afetará apenas um trabalho, o mais recente; portanto, você pode estar enganado ao entender a situação atual. Um trabalho em segundo plano ainda pode gravar no terminal:
echo foo > /dev/tcp/127.0.0.1/10111
Pode depender de como o programa lida com o terminal, ncat
funciona bem para escrever. Para ler, porém, os programas interromperão a execução e você verá a mensagem "Parado". O shell iniciará os processos e esperará que eles saiam ou recebam um sinal SIGTTIN ( nohup
é uma maneira de contornar isso, como está disown
).
Você pode colocar em segundo plano um trabalho parado específico com
$ bg %3
(no meu caso, receberei o erro bash: bg: job 3 already in background
)
Caso contrário, se um processo estiver em primeiro plano, a menos que o programa pegue o SIGTSTP e faça algo especial, é improvável que tenha problemas com um rápido Ctrl- Ze bg
. Não há nada de especial nos programas de rede a esse respeito, as conexões / dados recebidos serão armazenados em buffer pelo kernel (até certo ponto). Uma conexão de streaming pode ter uma pausa observável.
Consulte a seção " CONTROLE DE TRABALHO " da página de manual do bash para obter mais detalhes.