GNU/Linux >> Tutoriales Linux >  >> Linux

proceso de fondo en linux

Hay una cosa crucial que debe hacer después de agregar un & al final del comando. El proceso sigue vinculado a la terminal. Necesitas ejecutar disown después de ejecutar el comando java.

java -jar yourApp.jar > log.txt &
disown

Ahora, puede cerrar la terminal.


Hay varias maneras de lograr tal cosa:

  1. nohup java -server myApplication.jar > /log.txt - Esto es bastante sencillo. Simplemente pondrá la aplicación en segundo plano. Esto funcionará, pero no es una buena forma de hacerlo.
  2. Utilice un envoltorio de shell y la aplicación OR daemon anterior. Muchos proyectos de código abierto utilizan este enfoque y es bastante bueno para la mayoría de los escenarios. Adicionalmente se puede incluir en init.d y el nivel de ejecución requerido con comandos regulares de inicio, parada y estado. Puedo proporcionar un ejemplo si es necesario.
  3. Cree su propio servidor daemon utilizando Java Service Wrapper o Apache Jakarta Commons Daemon. Nuevamente, ambos son extremadamente populares, bien probados y confiables. ¡Y disponible tanto para Linux como para Windows! ¡El servidor Tomcat usa el de Apache Commons! Además está Akuma.

Personalmente, elegiría la solución 2 o 3 si necesita usar este servidor en el futuro y/o distribuirlo a clientes, usuarios finales, etc. nohup es bueno si necesita ejecutar algo y no tiene tiempo para desarrollar una solución más compleja para el problema.

Anuncio 2:

Los mejores scripts, utilizados por muchos proyectos, se pueden encontrar aquí.

Para Debian/Ubuntu se puede usar un script muy simple basado en start-stop-daemon . En caso de duda hay /etc/init.d/skeleton uno puede modificar.

#!/bin/sh

DESC="Description"
NAME=YOUR_NAME
PIDFILE=/var/run/$NAME.pid
RUN_AS=USER_TO_RUN
COMMAND=/usr/bin/java -- -jar YOUR_JAR

d_start() {
    start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --exec $COMMAND
}

d_stop() {
    start-stop-daemon --stop --quiet --pidfile $PIDFILE
    if [ -e $PIDFILE ]
        then rm $PIDFILE
    fi
}

case $1 in
    start)
    echo -n "Starting $DESC: $NAME"
    d_start
    echo "."
    ;;
    stop)
    echo -n "Stopping $DESC: $NAME"
    d_stop
    echo "."
    ;;
    restart)
    echo -n "Restarting $DESC: $NAME"
    d_stop
    sleep 1
    d_start
    echo "."
    ;;
    *)
    echo "usage: $NAME {start|stop|restart}"
    exit 1
    ;;
esac

exit 0

Linux
  1. Linux:¿cómo limitar un proceso a un núcleo de CPU en Linux?

  2. Comando de eco de Linux

  3. Proceso de arranque de Linux

  4. Ejemplos de comandos echo en Linux

  5. Proceso de Linux en segundo plano - ¿Se detuvo en los trabajos?

Comando Pstree en Linux

Comando matar en Linux

Comando de eco en Linux

Cómo obtener el uso de la CPU de un solo proceso en Linux

Supervisión de procesos en Linux

Cómo enviar procesos a segundo plano en Linux