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:
|
<<: Vue3+TypeScript implementiert ein vollständiges Beispiel einer rekursiven Menükomponente
>>: Detaillierte Erklärung der MySQL-Zeichenfolgenverkettungsfunktion GROUP_CONCAT
Inhaltsverzeichnis Fertighaus So erstellen Sie ei...
yum-Befehl Yum (vollständiger Name Yellow Dog Upd...
Während der Entwicklungstätigkeit bin ich auf ein...
Ich habe Node auf dem Laufwerk D installiert und ...
Ich möchte eine Frage stellen. Ich habe in Dreamw...
Melden Sie sich bei Ihrem Konto an export DOCKER_...
Inhaltsverzeichnis 1. Datenquelle 2. Gesamtrangfo...
Inhaltsverzeichnis 1. Wie wird die aktuelle Uhrze...
1. Laden Sie das Installationspaket herunter Down...
1. Herunterladen: http://www.oracle.com/technetwo...
1. Gehen Sie zur offiziellen Website, um das JDK-...
Der Autor stieß kürzlich bei seiner Arbeit auf ei...
Schreiben Sie zuerst ein SQL Wählen Sie DISTINCT ...
Inhaltsverzeichnis 1. Erstellen Sie eine Tabelle ...
In diesem Artikel erfahren Sie den spezifischen J...