GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Hintergrundprozess unter Linux

Es gibt eine entscheidende Sache, die Sie tun müssen, nachdem Sie einen & hinzugefügt haben am Ende des Befehls. Der Prozess ist weiterhin mit dem Terminal verbunden. Sie müssen disown ausführen nachdem Sie den Java-Befehl ausgeführt haben.

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

Jetzt können Sie das Terminal schließen.


Es gibt mehrere Möglichkeiten, wie Sie so etwas erreichen können:

  1. nohup java -server myApplication.jar > /log.txt - das ist ziemlich einfach. Es wird nur die Anwendung in den Hintergrund stellen. Das wird funktionieren, aber es ist einfach kein sehr guter Weg, dies zu tun.
  2. Verwenden Sie einen Shell-Wrapper und die obige OR-Daemon-App. Dieser Ansatz wird von vielen Open-Source-Projekten verwendet und ist für die meisten Szenarien recht gut. Zusätzlich kann es in init.d eingebunden werden und benötigtem Runlevel mit regulären Start-, Stopp- und Statusbefehlen. Ich kann bei Bedarf ein Beispiel liefern.
  3. Erstellen Sie Ihren eigenen Daemon-Server mit Java Service Wrapper oder Apache Jakarta Commons Daemon. Auch hier sind beide äußerst beliebt, gut getestet und zuverlässig. Und sowohl für Linux als auch für Windows verfügbar! Der von Apache Commons wird vom Tomcat-Server verwendet! Zusätzlich gibt es noch Akuma.

Ich persönlich würde Lösung 2 oder 3 wählen, wenn Sie diesen Server in Zukunft verwenden und/oder an Clients, Endbenutzer usw. verteilen müssen. nohup ist gut, wenn Sie etwas ausführen müssen und keine Zeit haben, eine komplexere Lösung für das Problem zu entwickeln.

Anzeige 2:

Die besten Skripte, die von vielen Projekten verwendet werden, finden Sie hier.

Für Debian/Ubuntu kann man ein sehr einfaches Skript verwenden, das auf start-stop-daemon basiert . Im Zweifel gibt es /etc/init.d/skeleton man kann modifizieren.

#!/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. Echo-Befehlsbeispiele in Linux

  2. Linux-Prozess im Hintergrund - In Jobs gestoppt?

  3. Erstellen eines Daemons unter Linux

  4. Linux:in einen Dienst verarbeiten

  5. Der im Hintergrund laufende Prozess wurde unter Linux beendet

Pstree-Befehl unter Linux

Kill-Befehl unter Linux

Echo-Befehl unter Linux

So erhalten Sie die CPU-Auslastung eines einzelnen Prozesses in Linux

Prozessüberwachung unter Linux

So senden Sie Prozesse unter Linux an den Hintergrund