Veröffentlicht am Schreiben Sie einen Kommentar

Shell-Script: Auf RAM und Swap Verbrauch reagieren

Dieses getestete Shell-Script ermittelt den Speicherverbrauch RAM und SWAP unter einem Debian 11.
Es startet wenn die SWAP Nutzung über 50% liegt in diesem Beispiel den MariaDB Datenbankserver neu um SWAP und RAM Ressourcen wieder freizugeben. Dieses Bash-Script eigenet sich sich für kleine VPS-Server die wenig Ressourcen haben um z.B. Dienste neuzustarten wie mysql / mariaDB um Ressourcen die den Seitenaufruf blockieren wieder freizugeben.
Das Script funktioniert unter bash und sh.

#!/bin/bash

# RAM-Verbrauch in Prozent anzeigen
echo "RAM-Verbrauch:"
free | awk '/Mem/{printf("Verbraucht: %.2f% \n"), $3/$2*100.0}'

# Swap-Verbrauch in Prozent anzeigen
echo "Swap-Verbrauch:"
free | awk '/Swap/{printf("Verbraucht: %.2f% \n"), $3/$2*100.0}'

# Swap-Verbrauch in Prozent ermitteln
SWAP_USAGE=$(free | awk '/Swap/{printf("%.0f"), $3/$2*100}')

# Überprüfen, ob der Swap-Verbrauch über 50% liegt
if (( SWAP_USAGE > 50 )); then
    echo "Swap-Verbrauch ist über 50%, MariaDB wird neu gestartet..."
    sudo systemctl restart mariadb
else
    echo "Swap-Verbrauch ist unter 50%, kein mariaDB Neustart erforderlich."
fi

In Crontab hinzufügen

Crontab -e

*/5 * * * * bash ~/ram_verbrauch.sh

Das Script wird im Homeverzeichnis des Benutzers geladen, der Pfad zum Shell-Script kann frei angepasst werden.

Veröffentlicht am Schreiben Sie einen Kommentar

Server: Prozesse automatisch Neustarten (Shell-Script)

Startet z.B. MariaDB neu falls dieser nicht mehr läuft. Dieses funktioniert und ist getestet mit Debian 11.
Falls MariaDB nicht mehr laufen sollte wird dieser Service einfach neugestartet. Dieses lässt sich auch für andere Services erweitern. Schade das es WatchDog nicht mehr gibt für Debian 11.
Dieses Shell-Script funktioniert mit bash und sh.

#!/bin/bash

# Überprüfen, ob der MariaDB-Dienst läuft
if systemctl is-active --quiet mariadb
then
    echo "MariaDB läuft."
else
    echo "MariaDB läuft nicht. Starte MariaDB neu..."
    # MariaDB neu starten
    systemctl start mariadb
    if systemctl is-active --quiet mariadb
    then
        echo "MariaDB wurde erfolgreich neu gestartet."
    else
        echo "Fehler beim Neustart von MariaDB."
    fi
fi

Hier ist eine detaillierte Beschreibung:

  1. #!/bin/bash: Dies ist der Shebang, der angibt, dass das Skript mit bash, der Bourne-Again-Shell, ausgeführt werden soll.
  2. if systemctl is-active --quiet mariadb: Dieser Befehl überprüft, ob der MariaDB-Dienst aktiv ist. Wenn der Dienst aktiv ist, gibt systemctl is-active --quiet mariadb einen Exit-Code von 0 zurück.
  3. echo "MariaDB läuft.": Wenn der MariaDB-Dienst läuft, wird diese Nachricht ausgegeben.
  4. else: Dieser Teil des Skripts wird ausgeführt, wenn der MariaDB-Dienst nicht läuft.
  5. echo "MariaDB läuft nicht. Starte MariaDB neu...": Diese Nachricht wird ausgegeben, wenn der MariaDB-Dienst nicht läuft.
  6. systemctl start mariadb: Dieser Befehl versucht, den MariaDB-Dienst zu starten.
  7. if systemctl is-active --quiet mariadb: Nach dem Versuch, den Dienst zu starten, überprüft das Skript erneut, ob der Dienst jetzt läuft.
  8. echo "MariaDB wurde erfolgreich neu gestartet.": Wenn der Dienst erfolgreich gestartet wurde, wird diese Nachricht ausgegeben.
  9. else echo "Fehler beim Neustart von MariaDB.": Wenn der Dienst immer noch nicht läuft, wird diese Fehlermeldung ausgegeben.

Cronjob mittels Crontab -e

 einen Cronjob zu erstellen, der alle 5 Minuten überprüft, ob ein Prozess läuft, können Sie den crontab-Befehl verwenden. Hier ist ein Beispiel, wie Sie das tun können:

  1. Öffnen Sie Ihren Crontab mit dem Befehl crontab -e.
  2. Fügen Sie die folgende Zeile hinzu, um Ihr Skript alle 5 Minuten auszuführen:
*/5 * * * * /pfad/zum/skript.sh

Ersetzen Sie /pfad/zum/skript.sh durch den tatsächlichen Pfad zu Ihrem Skript.

Dieser Cronjob wird nun alle 5 Minuten ausgeführt und überprüft, ob der MariaDB-Prozess läuft, und startet ihn neu, wenn er nicht läuft.

Bitte beachten Sie, dass Sie möglicherweise sudo vor dem crontab-Befehl benötigen, abhängig von Ihren Systemberechtigungen. Stellen Sie außerdem sicher, dass Ihr Skript ausführbare Berechtigungen hat. Sie können dies mit dem Befehl chmod +x /pfad/zum/skript.sh erreichen.