
Tengo un proceso ejecutando el primer plano. Me pregunto si es posible salir de Bash.
- sin (por supuesto) matar el proceso de primer plano y salir como de costumbre, y
- sin matar el programa terminal, o si la conexión es remota a través de un cliente (como iTerm2 o PuTTY), sin matar dicho cliente.
Sé que si no tengo un proceso en primer plano en ejecución, puedo enviar fácilmente Fin de transmisión mediante Ctrl-d o emitir exit
. Me gustaría saber si esto es posible con un proceso en primer plano en ejecución.
Respuesta1
El proceso en primer plano está destinado al servidor debajo de las propiedades, y están vinculados con la terminal.
- para interactuar con el usuario.
- para alimentar la entrada de texto al pseudodispositivo maestro para que lo utilice el shell (como bash), que está conectado al pseudodispositivo esclavo.
- para leer la salida de texto del pseudodispositivo maestro y mostrársela al usuario.
Entonces creo que esto no es posible. O ejecute su proceso como demonio y envíe la salida a un terminal y/o archivo en particular como lo hace el proceso de instalación.
Respuesta2
Además de screen
/ tmux
también hay nohup
. Es más simple pero a veces mejor dependiendo de su situación exacta. Mira aquí:nohup contra pantallapara más detalles.
Tenga en cuenta que eso nohup
mantendrá el proceso en primer plano pero no podrá interactuar con él ni ver las salidas en la terminal. Para iniciar el proceso en segundo plano, agregue &
al iniciar el proceso (es decir nohup <your command here> &
).
Si el proceso ya se está ejecutando, nohup
puede volver a obtener acceso a la terminal presionando Ctrl+Z
(detener proceso) seguido del bg
comando (enviar proceso detenido a fondo).
EDITAR(después del comentario de OP): No estoy seguro de entender el escenario, pero tal vez podrías intentarlo:
- abrir la ventana de terminal (algunos shells se iniciarán dentro)
- iniciar explícitamente otro shell (por ejemplo, bash) dentro de esa ventana
- inicie su proceso de primer plano dentro del segundo shell (sin ningún
nohup
s, etc.) - abrir otra ventana de terminal
- identificar el shell "intermedio" (será el proceso padre del proceso probado)
- envía una señal de muerte al caparazón "intermedio".
Esto convierte el proceso probado en un "semi-demonio" y le da acceso al shell de nivel superior en la primera ventana de terminal. Tenga en cuenta que el proceso probado todavía está adjunto al terminal, por lo que finalizará cuando cierre la ventana.