GNU/Linux >> Tutoriels Linux >  >> Linux

Processus d'arrière-plan sous Linux

Il y a une chose cruciale que vous devez faire après avoir ajouté un & à la fin de la commande. Le processus est toujours lié au terminal. Vous devez exécuter disown après avoir exécuté la commande java.

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

Maintenant, vous pouvez fermer le terminal.


Il existe plusieurs façons d'y parvenir :

  1. nohup java -server myApplication.jar > /log.txt - C'est assez simple. Cela mettra simplement l'application en arrière-plan. Cela fonctionnera, mais ce n'est tout simplement pas une très bonne façon de le faire.
  2. Utilisez un wrapper shell et l'application démon OR ci-dessus. Cette approche est utilisée par de nombreux projets open source et convient parfaitement à la plupart des scénarios. De plus, il peut être inclus dans init.d et le niveau d'exécution requis avec des commandes régulières de démarrage, d'arrêt et d'état. Je peux fournir un exemple si nécessaire.
  3. Créez votre propre serveur démon en utilisant Java Service Wrapper ou Apache Jakarta Commons Daemon. Encore une fois - les deux sont extrêmement populaires, bien testés et fiables. Et disponible pour Linux et Windows ! Celui d'Apache Commons est utilisé par le serveur Tomcat ! De plus, il y a Akuma.

Personnellement, j'opterais pour la solution 2 ou 3 si vous avez besoin d'utiliser ce serveur à l'avenir et/ou de le distribuer aux clients, utilisateurs finaux, etc. nohup est bon si vous devez exécuter quelque chose et n'avez pas le temps de développer une solution plus complexe pour le problème.

Annonce 2 :

Les meilleurs scripts, utilisés par de nombreux projets, peuvent être trouvés ici.

Pour Debian/Ubuntu, on peut utiliser un script très simple basé sur start-stop-daemon . En cas de doute, il y a /etc/init.d/skeleton on peut modifier.

#!/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. Commande d'écho Linux

  2. Processus Linux en arrière-plan - Arrêté dans les travaux ?

  3. Créer un démon sous Linux

  4. envoyer du courrier depuis le terminal linux en une seule ligne

  5. Linux :transformer en service

Commande Pstree sous Linux

Commande Kill sous Linux

Commande Echo sous Linux

Comment obtenir l'utilisation du processeur d'un seul processus sous Linux

Surveillance des processus sous Linux

Comment envoyer des processus en arrière-plan sous Linux