Si realmente tiene un trabajo en primer plano, entonces bash está esperando que se complete, esa es más o menos la definición de un trabajo en primer plano . Si bash todavía tiene el control de la terminal, verifique qué sucede con jobs -l
, por ejemplo:
$ 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 &
Comencé tres ncat
procesos de escucha en segundo plano para esto. También puede ver "Listo" o "Detenido" para ver el estado de un trabajo.
Puede realizar un trabajo en segundo plano de manera efectiva desde un shell diferente utilizando el método SIGSTOP / SIGCONT de Stefan Seidel (aunque la señal real enviada por un shell con Ctrl- Zes SIGTSTP, cualquiera de las señales debería funcionar).
Existe una sutil distinción entre procesos y trabajos cuando se utilizan los términos primer plano y fondo. Solo hay un trabajo en primer plano de shell , puede haber varios procesos en primer plano (esto está relacionado con las ID de grupo de proceso de terminal y se puede observar cuando inicia dos o más procesos en una tubería).
Un proceso en ejecución o una tubería bajo el control del shell se conoce como un "trabajo", cuando usa el comando bg
o fg
está refiriendo implícitamente el trabajo más reciente, en mi caso el que está +
en el anterior. Estos trabajos también pueden (entre otras cosas) referirse explícitamente como% 1% 2 o% 3 (el número en []
).
Un fg
comando no calificado solo afectará un trabajo, el más reciente, por lo que puede estar equivocado en su comprensión de la situación actual. Un trabajo en segundo plano aún puede escribir en la terminal:
echo foo > /dev/tcp/127.0.0.1/10111
Puede depender de cómo el programa maneja el terminal, ncat
funciona bien para escribir. Para leer, aunque los programas detendrán la ejecución, verá un mensaje "Detenido". El shell iniciará procesos y esperará a que salgan o reciban una señal SIGTTIN ( nohup
es una forma de evitar esto, tal como está disown
).
Puede crear un fondo de un trabajo detenido específico con
$ bg %3
(en mi caso obtendré el error bash: bg: job 3 already in background
)
De lo contrario, si un proceso está en primer plano, a menos que el programa detecte SIGTSTP y haga algo especial, es poco probable que tenga problemas con un rápido Ctrl- Zy bg
. No hay nada especial sobre los programas de red a este respecto, las conexiones / datos entrantes serán almacenados por el núcleo (hasta cierto punto). Sin embargo, una conexión de transmisión puede tener una pausa observable.
Consulte la sección " CONTROL DE TRABAJO " de la página de manual de bash para obtener más detalles.