Linux: Beispiel für das Bearbeiten des Start-, Stopp- und Neustartskripts für Springboot-JAR-Pakete

Linux: Beispiel für das Bearbeiten des Start-, Stopp- und Neustartskripts für Springboot-JAR-Pakete

Vorwort

In der Springboot-Konfigurationsdatei haben die Namen der Konfigurationsdateien ihre eigene Bedeutung und Verwendung

  • dev-Entwicklungsumgebung
  • prod Produktionsumgebung (Standard)
  • Test-Testumgebung

Laden Sie das angegebene Profil --spring.profiles.active=prod

Springboot lädt JAR-Pakete auf folgende Weise:

// Direkt in der Konsole starten. Der Nachteil ist, dass das Projekt geschlossen wird, wenn die Konsole geschlossen wird.
java -jar bootdo.jar
// Diese Methode kann im Hintergrund ausgeführt werden, aber wenn die Shell gestartet wird, bleibt sie auch hängen java -jar /bootdo-2.0.0.jar > bootdolog.file 2>&1 &
// Wenn nohup hinzugefügt wird, wird es nicht beeinflusst, selbst wenn die Shell beendet wird.
nohup java -jar /bootdo-2.0.0.jar > bootdolog.file 2>&1 &

erklären

nohup bedeutet permanentes Laufen. & zeigt den Hintergrundvorgang an

> stellt dar, wohin weitergeleitet werden soll

1 bedeutet stdout-Standardausgabe, der Systemstandardwert ist 1, daher ist ">/dev/null" gleichbedeutend mit "1>/dev/null"

2 bedeutet stderr Standardfehler

nohup ./mqnamesrv >/home/cxb/mqnamesrv.out 2>&1 & Das heißt, die Standardausgabe wird an mqnamesrv.out gesendet. Anschließend wird die Standardfehlerausgabe in dieselbe Datei wie die Standardausgabe umgeleitet.

Nachdem der Server auf die folgende Weise erfolgreich gestartet wurde, müssen Sie, sofern ein Neustart erforderlich ist, die Prozess-ID über ps -ef | grep bootdo abfragen, ihn anschließend über kill -s 9 ${pid} beenden und neu starten, was sehr mühsam ist.

nohup java -jar /bootdo-2.0.0.jar > bootdolog.file 2>&1 & 

Es ist ok, wenn es ein- oder zweimal passiert, aber wenn es mehrmals passiert, wird es etwas überwältigend sein.

Auf diese Weise können Sie ein Shell-Skript schreiben, um Vorgänge in einem Schritt zu starten (starten), zu stoppen (stoppen) und neu zu starten (neu starten), was bequem und effizient ist

Erstellen Sie ein wss.sh-Skript in einem benutzerdefinierten Verzeichnis und bearbeiten Sie den Inhalt wie folgt.

#!/bin/bash
#Dies kann durch Ihr eigenes ausführbares Programm ersetzt werden. Es muss kein anderer Code geändert werden APP_NAME=websocketserver-0.0.1-SNAPSHOT.jar
 
#Gebrauchsanweisung, die zur Eingabeaufforderung für Parameter verwendet wird usage() {
 echo "Verwendung: sh-Skriptname.sh [Start|Stopp|Neustart|Status]"
 Ausfahrt 1
}
 
# Prüfen, ob das Programm läuft is_exist(){
 pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
 # Wenn es nicht existiert, gib 1 zurück; wenn es existiert, gib 0 zurück 
 wenn [ -z "${pid}" ]; dann
 Rückgabe 1
 anders
 Rückgabe 0
 fi
}
 
#Startmethode start(){
 existiert
 wenn [ $? -eq "0" ]; dann
 echo "${APP_NAME} läuft bereits. pid=${pid} ."
 anders
 nohup java -jar /mnt/ssd1/project/websocket/$APP_NAME > /mnt/ssd1/project/websocket/websocketserverlog.file 2>&1 &
 echo "${APP_NAME} erfolgreich gestartet"
 fi
}
 
#Stopp-Methode stop(){
 existiert
 wenn [ $? -eq "0" ]; dann
 töten -9 $pid
 anders
 echo "${APP_NAME} läuft nicht"
 fi 
}
 
# Ausgabe des laufenden Status status(){
 existiert
 wenn [ $? -eq "0" ]; dann
 echo "${APP_NAME} läuft. Pid ist ${pid}"
 anders
 echo "${APP_NAME} läuft NICHT."
 fi
}
 
#Neustart restart(){
 stoppen
 Start
}
 
#Wählen Sie entsprechend den Eingabeparametern die entsprechende auszuführende Methode aus. Wenn keine Eingabe erfolgt, wird die Methode ausgeführt. Anweisungen für den Anwendungsfall „$1“ in
 "Start")
 Start
 ;;
 "stoppen")
 stoppen
 ;;
 "Status")
 Status
 ;;
 "Neustart")
 Neustart
 ;;
 *)
 Verwendung
 ;;
esac 

Konfigurieren Sie den Startbefehl in der rot markierten Zeile.

Danach können Sie mit wss.sh start | stop | restart starten, stoppen und neu starten.

Hinzufügen

Unterschied zwischen sh xxx.sh und ./xxx.sh

sh xxx.sh benötigt keine Ausführungsberechtigung

./xxx.sh muss über Ausführungsberechtigung verfügen, die über chmod +x xxx.sh erteilt werden kann.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Mit Springboot kann das JAR-Paket als Dienst gestartet werden
  • Mit Springboot kann das JAR-Paket als Dienst gestartet werden
  • Ein ausführliches Tutorial zum Erstellen, Verpacken und Starten von Jar- und War-Paketen in SpringBoot
  • SpringBoot-Projekt, Ausführen einer JAR-Paket-Startvorgangsschritt-Prozessanalyse
  • So starten Sie das SpringBoot-JAR-Paket

<<:  Vue implementiert unregelmäßige Screenshots

>>:  Lösen Sie das Gruppieren-nach-Abfrage-Problem nach dem Upgrade von Mysql auf 5.7

Artikel empfehlen

So verwenden Sie async await elegant in JS

Inhaltsverzeichnis $.ajax von jQuery Der Beginn d...

MySQL 5.7.17 Installations- und Konfigurations-Tutorial unter CentOS6.9

CentOS6.9 installiert Mysql5.7 zu Ihrer Informati...

Tutorial zur mobilen Entwicklung: Zusammenfassung der Pixelanzeigeprobleme

Vorwort Ich bin davon überzeugt, dass bei der Ent...

Lernen Sie MySQL auf einfache Weise

Vorwort Die Datenbank war schon immer meine Schwa...

Detaillierte Erklärung der einfachen HTML- und CSS-Verwendung

Ich werde drei Tage benötigen, um den statischen ...

So drucken Sie hervorgehobenen Code in der Node.JS-Konsole

Vorwort Wenn der Code ausgeführt wird und ein Feh...

Detaillierte Erklärung der Text-Fill-Color-Eigenschaft in CSS3

Was bedeutet Textfüllfarbe? Rein wörtlich bedeute...

Vue implementiert eine Komponente zur dynamischen Abfrageregelgenerierung

1. Dynamische Abfrageregeln Die dynamischen Abfra...

Zusammenfassung einiger gängiger Protokolle in MySQL

Vorwort: Im MySQL-System gibt es viele verschiede...

Mehrere Methoden zur Lösung des Problems des MySQL-Fuzzy-Abfrageindexfehlers

Wenn wir das Platzhalterzeichen „like %“ verwende...

Einführung in Container-Datenvolumes in Docker

Inhaltsverzeichnis Datenvolumen des Docker-Contai...

Lösen Sie das Matching-Problem in CSS

Problembeschreibung Wie wir alle wissen, wird bei...