Inhaltsverzeichnis:
- Schritt 1: Verwenden von Methoden von Systemd
- Schritt 2: Konfigurieren und Verwenden der Service Checker-Skripte
- Schritt 3: Abschließende Gedanken
Video: Service Monitor-Skript für Linux-Server - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Ein stabiles, ständig laufendes System zu haben, kann eine schwierige Aufgabe sein, selbst wenn Sie Linux verwenden.
Aufgrund der Komplexität moderner Softwarepakete und schlechter Codierung können unweigerlich einige Prozesse von Zeit zu Zeit abstürzen. Dies kann eine schlechte Sache sein, wenn Sie einen Server betreiben und einige Leute auf diese Dienste angewiesen sind.
Schritt 1: Verwenden von Methoden von Systemd
Wie Sie vielleicht bereits wissen, verwenden die meisten modernen Linux-Betriebssysteme systemd.
Wenn Sie mit systemd nicht vertraut sind, lautet dies laut Wikipedia:
„… ein Init-System, das in Linux-Distributionen verwendet wird, um den Benutzerbereich zu booten und alle Prozesse anschließend zu verwalten, anstelle der Init-Systeme von UNIX System V oder Berkeley Software Distribution (BSD). …“
Viele Leute argumentieren immer noch, warum es notwendig war, das gute alte init-System durch dieses kompliziertere Prozessmanagementsystem zu ersetzen, aber unter folgendem Link könnte man eine gute Erklärung finden:
www.tecmint.com/systemd-replaces-init-in-l…
Die wichtigste Verbesserung wäre, dass es aufgrund der gleichzeitigen und parallelen Verarbeitung beim Booten anstelle des sequentiellen Ansatzes von init in der Lage ist, das System schneller als init hochzufahren
Ohne in die Tiefen von systemd einzusteigen, müssen Sie zum Hinzufügen eines Prozesses zu systemd eine Servicedatei erstellen. Die Syntax einer solchen Datei kann von sehr einfach bis äußerst kompliziert reichen, und wir werden nicht ins Detail gehen. Um eine einfache.service-Datei zu haben, reicht es aus, die folgenden Einträge zu verwenden:
[Unit]Description=Beschreibung der AnwendungDocumentation=https://wikipedia.org/ After=local-fs.target network.target[Service]Type=simpleExecStart=/usr/sbin/applicationExecReload=/usr/sbin/application reloadExecStop=/ usr/sbin/application stopRestart=always[Install]WantedBy=multi-user.target
Platzieren Sie diese in der Datei application.service im Ordner /lib/systemd/system.
Was jede dieser Optionen bewirkt, wird unter dem folgenden Link erklärt:
access.redhat.com/documentation/en-US/Red_…
Um Ihre Anwendung zu starten, geben Sie folgenden Befehl ein:
sudo systemctl start application.service
Hinweis: Die Erweiterung.service kann weggelassen werden.
So stoppen Sie die Anwendung:
sudo systemctl stop application.service
Wenn die Konfigurationsdatei geändert wurde und Sie die Einstellungen neu laden möchten:
sudo systemctl reload application.service
So starten Sie die Anwendung neu:
sudo systemctl neu starten application.service
So aktivieren Sie das automatische Starten beim Booten:
sudo systemctl aktivieren application.service
Wenn dies aktiviert ist, versucht der systemd-Prozessmanager, die Anwendung basierend auf den von der Systemdatei bereitgestellten Einstellungen zu starten.
Um es zu deaktivieren, verwenden Sie den gleichen Befehl wie oben, jedoch mit dem Parameter 'disable'.
Wenn Sie Restart=always in die Servicedatei einfügen, überwacht systemd den Prozess und wenn er nicht in der Prozessliste gefunden wird, versucht es, ihn automatisch neu zu starten.
Wenn du platzierst
NeustartSek=30
Nach der Neustart-Anweisung wird 30 Sekunden gewartet, bevor versucht wird, den Prozess neu zu starten. Dies kann nützlich sein, da ein kontinuierlicher Neustartversuch eines fehlgeschlagenen Dienstes / einer fehlgeschlagenen Anwendung zu einer hohen Anforderung an das System führen kann (Schreiben von Fehlerprotokollen usw.).
Wie Sie sehen, bietet systemd bereits einige Möglichkeiten, die Prozesse zu überwachen. In einigen Fällen kann dies jedoch nicht ausreichen. Was ist, wenn ein Prozess nicht beendet wird (er ist immer noch in der Prozessliste), aber er reagiert nicht mehr. In diesem Fall müssen Sie möglicherweise zusätzliche Prüfungen durchführen, um sicherzustellen, dass ein Prozess tatsächlich ausgeführt wird.
Hier sind die Skripte aus diesem instructable praktisch.
Schritt 2: Konfigurieren und Verwenden der Service Checker-Skripte
Wenn Sie mehr Kontrolle über Ihre laufenden Prozesse/Dienste benötigen, sind diese Skripte sicherlich hilfreich.
Da der Code etwas groß ist, wird er auf github hochgeladen und ist unter dem folgenden Repository zu finden:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
Das 'Herzstück' des Gesamtpakets ist das
checkService.sh
Vor der Verwendung müssen Sie den vollständigen Pfad zum Dienstordner ersetzen. Diese finden Sie am Anfang des Skripts.
Das Skript kann mehrere Prozesse überwachen und zusätzliche Aufgaben ausführen, wie unten beschrieben:
Es durchläuft alle Dateien aus dem Unterordner /services mit den Erweiterungen.serv oder.check und prüft, ob ein aktiver Prozess namens 'Anwendung' vorhanden ist.
Wenn für eine Anwendung keine '.check'-Datei vorhanden ist, nur die Datei application.serv:
Wenn der Prozess aktiv ist, wird der Prozess als aktiv betrachtet
Wenn der Prozess inaktiv ist, wird der Dienst neu gestartet, indem der folgende Befehl ausgegeben wird:
systemctl Anwendung neu starten
wenn die.serv-Datei leer ist!
Wenn die.serv-Datei nicht leer ist und über ausführbare Rechte verfügt, wird versucht, sie als einfaches BASH-Skript auszuführen.
Dies ist nützlich, wenn neben dem Neustart des Dienstes noch etwas getan werden muss.
Zum Beispiel muss in der spamd.serv-Datei aus dem obigen Repository, falls der spamd-Dienst tot ist, stattdessen der spamassassin-Dienst neu gestartet werden, wodurch auch spamd neu gestartet wird. Nur Spamd neu zu starten würde nicht ausreichen.
Der Inhalt einer solchen Serv-Datei kann je nach Bedarf bearbeitet werden.
Ein weiteres Beispiel ist die Datei pcscd.serv. In diesem Fall wurden auch mehrere andere Prozesse neu gestartet/gekillt.
Wenn eine Prüfdatei vorhanden ist, wird nach der Prüfung, ob der Prozess ausgeführt wird, auch diese Skriptdatei ausgeführt, um zusätzliche Prüfungen durchzuführen.
Für den oscam-Dienst haben wir beispielsweise eine Prüfdatei erstellt, die versucht, eine Verbindung zu seiner Weboberfläche herzustellen, um zu sehen, ob dies erfolgreich ist. Wenn nicht, reagiert der Dienst trotz aktivem Prozess nicht und muss neu gestartet werden. Der Neustart des Dienstes muss von der.check-Datei selbst durchgeführt/aufgerufen werden.
Ein weiteres Beispiel wäre der DLNA-Dienst mediatomb.
Dies ist ein kleiner Server, der DLNA-Clients Video-/Audioinhalte bereitstellt und sich selbst im Netzwerk überträgt. Manchmal hängt der Dienst und ist nicht mehr auffindbar, aber der Prozess ist weiterhin aktiv. Um zu überprüfen, ob der Dienst erkennbar ist, wurde das CLI-Dienstprogramm gssdp-discover verwendet. Der gesamte Code, der den DLNA-Server überprüft, wurde in ein mediatomb.check-Skript eingefügt.
Dies sind nur einige Beispiele für die Verwendung der.serv- und.check-Dateien.
Um einen neuen Dienst zu überwachen, müssen Sie eine.serv- und ggf. auch eine Check-Datei erstellen und das entsprechende Skript darin schreiben.
Wenn nur die Anwesenheit des Prozesses überprüft wird, reicht eine leere.serv-Datei aus. Wenn zusätzliche Prüfungen durchgeführt werden müssen, muss eine.check-Datei erstellt und ein kleines Skript geschrieben werden, um die Arbeit zu erledigen.
Natürlich muss das.sh-Skript periodisch ausgeführt werden, daher muss auch ein Cron-Job dafür erstellt werden:
#laufende Dienste alle 5 Minuten prüfen*/5 * * * * /var/bin/ServiceCheck/checkService.sh >/dev/null
Schritt 3: Abschließende Gedanken
Ich hoffe, Sie finden dieses Paket nützlich, da es die Überwachung von Linux-Prozessen erheblich vereinfacht und hoffentlich die Ausfallzeiten Ihrer Dienste minimiert.
Fühlen Sie sich frei, zusätzliche Skripte auf github hochzuladen, wenn Sie neue erstellen. Lassen Sie es mich einfach wissen und ich werde Sie als Mitwirkenden hinzufügen.
Empfohlen:
Arduino Auto-Rückfahrwarnsystem - Schritt für Schritt: 4 Schritte
Arduino Auto-Rückfahrwarnsystem | Schritt für Schritt: In diesem Projekt entwerfe ich eine einfache Arduino-Auto-Rückwärts-Parksensorschaltung mit Arduino UNO und dem Ultraschallsensor HC-SR04. Dieses Arduino-basierte Car-Reverse-Warnsystem kann für eine autonome Navigation, Roboter-Ranging und andere Entfernungsr
So deaktivieren Sie die Autokorrektur für nur ein Wort (iOS): 3 Schritte
So deaktivieren Sie die Autokorrektur für nur ein Wort (iOS): Manchmal korrigiert die Autokorrektur möglicherweise etwas, das Sie nicht korrigieren möchten, z. Textabkürzungen beginnen sich in Großbuchstaben zu setzen (imo korrigieren zum Beispiel zu IMO). So erzwingen Sie, dass die Korrektur eines Wortes oder einer Phrase beendet wird, ohne aut zu deaktivieren
Interessante Programmieranleitung für Designer - Bringen Sie Ihr Bild zum Laufen (Teil 2): 8 Schritte
Interessante Programmieranleitung für Designer – Bringen Sie Ihr Bild zum Laufen (Teil 2): Mathematik scheint für die meisten von Ihnen nutzlos zu sein. Die in unserem täglichen Leben am häufigsten verwendete ist einfach Addieren, Subtrahieren, Multiplizieren und Dividieren. Es ist jedoch ganz anders, wenn Sie mit Programm erstellen können. Je mehr Sie wissen, desto mehr wundervolle Ergebnisse werden Sie erhalten
Installieren des Windows-Subsystems für Linux (WSL): 3 Schritte
Installieren des Windows-Subsystems für Linux (WSL): Diese Anleitung soll Benutzern helfen, das Windows-Subsystem für Linux auf ihrem Windows 10-Computer zu installieren. Die spezifische Linux-Distribution, die dieser Befehlssatz verwendet, heißt Ubuntu. Schauen Sie hier für eine Übersicht über die verschiedenen Linux
So erstellen Sie eine UML für Java in Microsoft Visio: 4 Schritte
So erstellen Sie eine UML für Java in Microsoft Visio: Das Erstellen einer UML kann zunächst etwas einschüchternd wirken. Es gibt viele komplizierte Notationsstile, und es kann sich anfühlen, als gäbe es keine guten Ressourcen, um eine lesbare und genaue UML zu formatieren. Microsoft Visio macht jedoch das Erstellen einer UML-Qu