Allgemeines Startskriptbeispiel für ein Linux-Java-Programm

Allgemeines Startskriptbeispiel für ein Linux-Java-Programm

Allerdings ist die Häufigkeit des Shell-Starts sehr gering. . . Aber jedes Mal, wenn ich schreibe, muss ich mit vielen JAR-Dateipfaden umgehen und beim Hinzufügen neuer JAR-Pakete die Start-Shell ändern.

Habe im Internet ein gutes allgemeines Shell-Skript gefunden.

Ändern Sie einfach einige Konfigurationsvariablen und Sie können es als Startskript verwenden.

Es unterstützt neben der Startfunktion auch das Herunterfahren, den Neustart und die Überprüfung, ob es läuft.

In der Startfunktion kann der Nohup-Teil tatsächlich herausgenommen und in eine Konfigurationsvariable eingefügt werden. Der Originaltext des Autors wird hier unverändert eingefügt

Der Skriptcode lautet wie folgt:

#!/bin/sh
#Dieses Skript ist ein allgemeines Skript zum Starten eines Java-Programms unter Linux. Das heißt, es kann als selbststartendes Serviceskript aufgerufen werden.
#Es kann auch als eigenständiges Skript zum Starten eines Java-Programms verwendet werden.
#
#Autor: tudaxia.com, Datum: 07.06.2011
#
#Warnung!!!: Der Stopp-Teil dieses Skripts verwendet den System-Kill-Befehl, um den angegebenen Java-Programmprozess zwangsweise zu beenden.
#Vor dem Beenden des Prozesses werden keine bedingten Prüfungen durchgeführt. In manchen Fällen, etwa wenn ein Programm in eine Datei oder Datenbank schreibt,
#Kann zu Datenverlust oder unvollständigen Daten führen. Wenn Sie dies berücksichtigen müssen, müssen Sie das Skript neu schreiben.
#Fügen Sie vor der Ausführung des Kill-Befehls eine Reihe von Prüfungen hinzu.
#
#
###################################
#Umgebungsvariablen und Programmausführungsparameter#Diese Parameter müssen entsprechend der tatsächlichen Umgebung und dem Java-Programmnamen geändert werden########################################
#JDK-Pfad JAVA_HOME="/usr/java/jdk"
 
#Der Systembenutzer, der zum Starten des Ausführungsprogramms verwendet wird. Aus Sicherheitsgründen wird empfohlen, nicht das Root-Konto RUNNING_USER=root zu verwenden.
 
#Das Verzeichnis, in dem sich das Java-Programm befindet (das übergeordnete Klassenverzeichnis)
APP_HOME=/opt/tudaxia/test/WEB-INF
 
#Das Java-Hauptprogramm, das gestartet werden muss (Hauptmethodenklasse)
APP_MAINCLASS=com.tudaxia.test.TestMain
 
#Stellen Sie den vollständigen Klassenpfadparameter zusammen, einschließlich aller JARs im angegebenen Lib-Verzeichnis
CLASSPATH=$APP_HOME/Klassen
für i in "$APP_HOME"/lib/*.jar; mache
  CLASSPATH="$CLASSPATH":"$i"
Erledigt
 
#Startparameter der virtuellen Java-Maschine JAVA_OPTS="-ms512m -mx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"
 
###################################
#(Funktion) Feststellen, ob das Programm gestartet wurde#
#veranschaulichen:
#Verwenden Sie die mit JDK gelieferte Kombination aus JPS-Befehl und Grep-Befehl, um die PID genau zu finden
#jps plus l-Parameter bedeutet, dass der vollständige Paketpfad von Java angezeigt wird. #Verwenden Sie awk, um die PID (Teil $1) und den Java-Programmnamen (Teil $2) aufzuteilen.
###################################
# Psid-Variable initialisieren (global)
psid=0
 
Prüfpid() {
  javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`
 
  wenn [ -n "$javaps" ]; dann
   psid=`echo $javaps | awk '{print $1}'`
  anders
   psid=0
  fi
}
 
###################################
#(Funktion) Programm starten#
#veranschaulichen:
#1. Rufen Sie zuerst die Funktion checkpid auf, um die globale Variable $psid zu aktualisieren#2. Wenn das Programm gestartet wurde ($psid ist ungleich 0), wird angezeigt, dass das Programm gestartet wurde#3. Wenn das Programm nicht gestartet wurde, führen Sie die Startbefehlszeile aus#4. Rufen Sie nach der Ausführung des Startbefehls die Funktion checkpid erneut auf#5. Wenn das Ergebnis von Schritt 4 die PID des Programms bestätigen kann, drucken Sie [OK], andernfalls drucken Sie [Fehlgeschlagen]
#Hinweis: echo -n bedeutet, dass nach dem Drucken von Zeichen kein Zeilenumbruch erfolgt.#Hinweis: Verwendung von „nohup command>/dev/null 2>&1 &“#########################################
Start() {
  Prüfpid
 
  wenn [ $psid -ne 0 ]; dann
   echo "=================================="
   echo "warn: $APP_MAINCLASS bereits gestartet! (pid=$psid)"
   echo "=================================="
  anders
   echo -n "$APP_MAINCLASS wird gestartet …"
   JAVA_CMD="nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS >/dev/null 2>&1 &"
   su - $RUNNING_USER -c "$JAVA_CMD"
   Prüfpid
   wenn [ $psid -ne 0 ]; dann
     echo "(pid=$psid) [OK]"
   anders
     echo "[Fehlgeschlagen]"
   fi
  fi
}
 
###################################
#(Funktion) Stoppen Sie das Programm#
#veranschaulichen:
#1. Rufen Sie zuerst die Funktion checkpid auf, um die globale Variable $psid zu aktualisieren. #2. Wenn das Programm gestartet wurde ($psid ist ungleich 0), beginnen Sie, es zu stoppen. Andernfalls wird eine Meldung angezeigt, dass das Programm nicht ausgeführt wird. #3. Verwenden Sie den Befehl kill -9 pid, um den Prozess zwangsweise zu beenden. #4. Führen Sie die Kill-Befehlszeile sofort aus und überprüfen Sie den Rückgabewert des vorherigen Befehls: $?
#5. Wenn das Ergebnis von Schritt 4, $?, gleich 0 ist, drucken Sie [OK], andernfalls drucken Sie [Fehlgeschlagen]
#6. Um zu verhindern, dass das Java-Programm mehrfach gestartet wird, fügen wir den Prozess des wiederholten Prüfens und Beendens des Prozesses hinzu (rekursiver Aufruf von „stop“).
#Hinweis: echo -n bedeutet, dass nach dem Drucken von Zeichen kein Zeilenumbruch erfolgt.#Hinweis: In der Shell-Programmierung bedeutet "$?" den Rückgabewert des vorherigen Befehls oder einer Funktion.##########################################
stoppen() {
  Prüfpid
 
  wenn [ $psid -ne 0 ]; dann
   echo -n "$APP_MAINCLASS wird gestoppt ...(pid=$psid)"
   su - $RUNNING_USER -c "kill -9 $psid"
   wenn [ $? -eq 0 ]; dann
     echo "[OK]"
   anders
     echo "[Fehlgeschlagen]"
   fi
 
   Prüfpid
   wenn [ $psid -ne 0 ]; dann
     stoppen
   fi
  anders
   echo "=================================="
   echo "warn: $APP_MAINCLASS läuft nicht"
   echo "=================================="
  fi
}
 
###################################
#(Funktion) Programmausführungsstatus prüfen#
#veranschaulichen:
#1. Rufen Sie zuerst die Funktion checkpid auf, um die globale Variable $psid zu aktualisieren. #2. Wenn das Programm gestartet wurde ($psid ist ungleich 0), wird angezeigt, dass es ausgeführt wird, und die PID wird angezeigt.
#3. Andernfalls wird eine Meldung angezeigt, dass das Programm nicht ausgeführt wird.#########################################
status() {
  Prüfpid
 
  wenn [ $psid -ne 0 ]; dann
   echo "$APP_MAINCLASS läuft! (pid=$psid)"
  anders
   echo "$APP_MAINCLASS läuft nicht"
  fi
}
 
###################################
#(Funktion) Systemumgebungsparameter drucken#########################################
info() {
  echo "Systeminformationen:"
  echo "********************************"
  echo `head -n 1 /etc/issue`
  echo `uname -a`
  Echo
  echo "JAVA_HOME=$JAVA_HOME"
  echo `$JAVA_HOME/bin/java -version`
  Echo
  echo "APP_HOME=$APP_HOME"
  echo "APP_MAINCLASS=$APP_MAINCLASS"
  echo "********************************"
}
 
###################################
#Lesen Sie den ersten Parameter ($1) des Skripts und treffen Sie eine Beurteilung#Parameterwertebereich: {start|stop|restart|status|info}
#Wenn der Parameter nicht innerhalb des angegebenen Bereichs liegt, Hilfeinformationen drucken##########################################
Fall "$1" in
  'Start')
   Start
   ;;
  'stoppen')
   stoppen
   ;;
  'Neustart')
   stoppen
   Start
   ;;
  'Status')
   Status
   ;;
  'Info')
   Info
   ;;
 *)
   echo "Verwendung: $0 {start|stop|restart|status|info}"
   Ausfahrt 1
esac;

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So verwenden Sie das Java-Programm (JSch) zum Ausführen von Shell-Skripten auf Remote-Linux-Hosts
  • Führen Sie eine Java-Hintergrundcode-Methodenanalyse im JS-Skript aus
  • Java JS-Skripttool ausführen
  • Java-Programm zum Aufrufen und Ausführen von Shell-Skripten und Problemzusammenfassung (empfohlen)
  • Beim Ausführen einer Java-Anforderung kann die JVM nicht beendet werden, wenn die Skriptausführung endet
  • Detaillierte Erläuterung des Jmeter-Aufrufprozesses für Java-Skripte
  • So führen Sie ein Java-Programm-JAR mit einem Shell-Skript aus
  • So verhindern Sie die JS-Skript-Injektion in Java

<<:  Vue3+TypeScript implementiert ein vollständiges Beispiel einer rekursiven Menükomponente

>>:  Detaillierte Erklärung der MySQL-Zeichenfolgenverkettungsfunktion GROUP_CONCAT

Artikel empfehlen

Detaillierte Erklärung des Cocoscreater-Prefabs

Inhaltsverzeichnis Fertighaus So erstellen Sie ei...

Grundlegende Verwendung und Beispiele von yum (empfohlen)

yum-Befehl Yum (vollständiger Name Yellow Dog Upd...

In der HTML-Tabelle wird nur der äußere Rand der Tabelle angezeigt

Ich möchte eine Frage stellen. Ich habe in Dreamw...

Zusammenfassung der Verwendung von Datetime und Timestamp in MySQL

Inhaltsverzeichnis 1. Wie wird die aktuelle Uhrze...

Installationsprozess von Zabbix-Agent auf Kylin V10

1. Laden Sie das Installationspaket herunter Down...

So installieren Sie JDK8 unter Windows

1. Herunterladen: http://www.oracle.com/technetwo...

So konfigurieren Sie eine JDK-Umgebung unter Linux

1. Gehen Sie zur offiziellen Website, um das JDK-...

Umfassende Zusammenfassung der MySQL-Tabellen

Inhaltsverzeichnis 1. Erstellen Sie eine Tabelle ...