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

Neue Ideen zur Zeitformatierung in JavaScript toLocaleString()

Inhaltsverzeichnis 1. Konventionelle Ideen zur Ze...

Detailliertes Tutorial zur Installation von Prometheus mit Docker

Inhaltsverzeichnis 1. Node Exporter installieren ...

Apache Calcite-Code zur Dialektkonvertierung

Definition Calcite kann SQL vereinheitlichen, ind...

Nginx erstellt Implementierungscode für RTMP-Liveserver

1. Erstellen Sie ein neues RTMP-Verzeichnis im Ng...

jQuery erzielt den Shutter-Effekt (mithilfe der Li-Positionierung)

In diesem Artikel wird der spezifische Code von j...

JS realisiert einfachen Bildkarusselleffekt

In diesem Artikel wird der spezifische JS-Code zu...

Warum brauchen wir Map, wenn wir in JavaScript bereits Object haben?

Inhaltsverzeichnis 1. Behandeln Sie Objekte nicht...

So verwenden Sie crontab zum Hinzufügen geplanter Aufgaben in Linux

Vorwort Das Linux-System wird durch den Systemdie...

Lernen Sie die asynchrone Programmierung in Node.js in einem Artikel

Inhaltsverzeichnis Einführung Synchron Asynchron ...

CSS - overflow:hidden in Projektbeispielen

Hier sind einige Beispiele, wie ich diese Eigensch...

Lösung für die Lücke zwischen Divs

Wenn Sie HTML-Div-Blöcke verwenden und die Mitte ...

Detaillierte Erläuterung der Beispiele für CSS-Gewichtswerte (Kaskadierung)

•Es gibt viele Selektoren in CSS. Was passiert, w...