Mantener una aplicación Java en ejecución cuando SSH está cerrado en Google Cloud


12

En este momento estoy ejecutando una aplicación Java mediante SSH-ing en una VM en Google Cloud Compute. Emito un comando para ejecutar la aplicación y carga una consola. Tan pronto como finalizo la conexión SSH, la aplicación se cierra. Supongo que esto se debe a que la consola se ha cerrado.

Me gustaría que esta aplicación (que es un servidor) persista después de que finalice SSH y, en cualquier momento, me gustaría poder volver a conectarme a la consola y emitir comandos en el servidor.


Respuestas:


14

Usted dice esto:

Me gustaría que esta aplicación (que es un servidor) persista después de que finalice SSH y, en cualquier momento, me gustaría poder volver a conectarme a la consola y emitir comandos en el servidor.

Ligeramente vago en los objetivos, ¡pero lo intentaré!

Para ejecutar cualquier comando como un proceso en segundo plano en un servidor Linux, debe anteponer el comando nohupy agregarlo &al final.

Entonces el comando final sería:

nohup [your command] &

El nohupmedio que el comando debe ignorar "cuelgue" y el ampersand &agregado a él es un comando de shell que le dice al sistema que ejecute el comando como proceso en segundo plano. Puede encontrar más información sobre su uso aquí .

Cuando ejecuta un comando como este, el proceso se ejecutará, se lo enviará de vuelta al símbolo del sistema y puede salir de la sesión de terminal o incluso ir y hacer otra cosa no relacionada con ese comando durante esa sesión de terminal.


1
Si quiero volver al proceso e ingresar un comando en la consola de Java, ¿cómo lo haría?
Noahb32

1
@ Noahb32 Bueno, esto lo lanzaría como un proceso en segundo plano; Principalmente uso este método para iniciar un proceso y luego olvidarlo. Si desea iniciar una nueva consola Java, puede hacerlo ya que está de vuelta en el shell. Pero tal vez debería investigar el uso, screenya que le permite volver a la sesión después del lanzamiento. Honestamente, su pregunta es muy vaga, así que si pudiera aclararla, eso podría ayudar a aclarar las cosas.
JakeGould

1
¡Gracias! Me gustaría agregar que puede monitorear la salida desde otro terminal: simplemente ejecute tail -f nohup.outen el mismo trabajo. dir.
naXa

3

Hay al menos tres formas de hacer esto: nohup('no cuelgue'), screen/ tmuxo disown. No está claro de su pregunta sobre su necesidad de conectarse al servidor e interactuar con el demonio después de desconectarse.

Si este es el caso, nohupy disownno serán buenas coincidencias a medida que sueltas el proceso (aunque sigue ejecutándose). tmux(y también screen) mantendrá un término en ejecución incluso cuando usted.

Para más información puedes ver las páginas respectivas:

man nohup
man tux

Bash rechazado (suponiendo que esté ejecutando Bash, aunque muchos otros shell incluyen algo similar)


Parece que no hay un disowncomando en Google Cloud, al menos la instancia que estoy usando, comenzó en 2019 o finales de 2018. El nohupcomando funciona bien, pero crea un archivo adicional que puede no ser deseado.
trysis

1

Para separar una aplicación de su shell en ejecución, haciendo que persista después de que el shell salga, use el nohupcomando

Simplemente prefija su comando normal con nohupy debería funcionar.


0

Además, si nohub no funciona, puede usar la pantalla :

 ssh into your remote box. 

escriba la pantalla A continuación, inicie el proceso que desee.

Press Ctrl-A then Ctrl-D. 

Esto separará su sesión de pantalla pero dejará sus procesos en ejecución. Ahora puede cerrar sesión en la caja remota.

If you want to come back later, log on again and type screen -r This will resume your screen session, and you can see the output

de

tu proceso

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.