Salga del shell con el proceso en ejecución en primer plano

Salga del shell con el proceso en ejecución en primer plano

Tengo un proceso ejecutando el primer plano. Me pregunto si es posible salir de Bash.

  1. sin (por supuesto) matar el proceso de primer plano y salir como de costumbre, y
  2. 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/ tmuxtambié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 nohupmantendrá 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, nohuppuede volver a obtener acceso a la terminal presionando Ctrl+Z(detener proceso) seguido del bgcomando (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:

  1. abrir la ventana de terminal (algunos shells se iniciarán dentro)
  2. iniciar explícitamente otro shell (por ejemplo, bash) dentro de esa ventana
  3. inicie su proceso de primer plano dentro del segundo shell (sin ningún nohups, etc.)
  4. abrir otra ventana de terminal
  5. identificar el shell "intermedio" (será el proceso padre del proceso probado)
  6. 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.

información relacionada