Ejecute Jar en segundo plano en Linux

Ejecute Jar en segundo plano en Linux

Tengo un jar que se ejecuta para siempre (bucle infinito con hilo de escucha de socket) y necesito que se ejecute en segundo plano en todo momento. Un ejemplo sería: "java -jar test.jar" ¿Cómo hago esto? ¡Gracias de antemano!

Respuesta1

varias maneras:

  1. añadiendo &en la parte posterior. Sin embargo, al usar esto, el programa aún finalizará si cerró la terminal que inició el programa.

  2. Inicie una screensesión e inicie el programa dentro de ella; puedes desconectar la screensesión y cerrar la terminal. Más adelante, podrá volver a conectarse a la sesión y encontrarse nuevamente en la consola como si hubiera estado allí todo el tiempo. Sin embargo, deberá iniciar una sesión de pantalla antes de ejecutar el programa y, si olvidó hacerlo, no podrá hacer nada al respecto.

  3. Utilice disownel control de trabajo desde su shell. Esto separará la tarea de su tty y su programa no finalizará cuando se cierre el tty. Sin embargo, no creo que haya ninguna forma de recuperar un trabajo repudiado.

Respuesta2

Un símbolo de línea de comando que siempre he usado durante tiempos de ejecución prolongados para durar hasta los cierres de sesión es "nohup", por lo que en su caso es

nohup java -jar test.jar &

El & es importante para que puedas ejecutar otro shell. Creo que esto no durará durante los reinicios.

Respuesta3

Si por "en todo momento" quiere decir que se inicia cuando se inicia la máquina, deberá iniciarlo como parte de los scripts de inicio. La forma sucia de hacer esto es agregar

java -jar test.jar >/dev/null 2>&1 &

/etc/rc.local(o reemplácelo con /dev/nullsu archivo de registro favorito).

Lo mejor sería crear un init.dscript que se inicie en los niveles de ejecución apropiados (es posible que no lo desee en los niveles de ejecución 0, 1 o 6, por ejemplo). De esa manera, también puedes reiniciarlo automáticamente si falla y tener una interfaz más agradable para detenerlo temporalmente.

Pequeños ejemplos enhttp://www.howtoforge.com/forums/archive/index.php/t-3628.html

Gran explicación enhttp://developer.novell.com/wiki/index.php/Writing_Init_Scripts

Respuesta4

Puede ejecutar cualquier tarea en segundo plano en Linux agregando un símbolo '&' al final de la línea de comando, por ejemplo

java -jar test.jar &

información relacionada