So überwachen Sie die Linux-Speichernutzung mit einem Bash-Skript

So überwachen Sie die Linux-Speichernutzung mit einem Bash-Skript

Vorwort

Auf dem Markt sind zahlreiche Open-Source-Überwachungstools erhältlich, mit denen die Leistung von Linux-Systemen überwacht werden kann. Es können E-Mail-Benachrichtigungen gesendet werden, wenn das System bestimmte Schwellenwerte erreicht. Es kann alles überwachen, von der CPU-Auslastung, Speicherauslastung, Swap-Auslastung, Festplattenspeicherauslastung und mehr.

Wenn Sie nur wenige Systeme haben und diese überwachen möchten, kann das Schreiben eines kleinen Shell-Skripts Ihre Aufgabe erheblich vereinfachen.

In diesem Tutorial haben wir zwei Shell-Skripte hinzugefügt, um die Speicherauslastung auf einem Linux-System zu überwachen. Wenn das System einen bestimmten Schwellenwert erreicht, sendet es eine E-Mail an eine bestimmte E-Mail-Adresse.

Methode 1: Speicherauslastung überwachen und E-Mails mit einem Linux-Bash-Skript senden

Wenn Sie den aktuellen Prozentsatz der Speicherauslastung nur dann per E-Mail erhalten möchten, wenn das System einen bestimmten Schwellenwert erreicht, verwenden Sie das folgende Skript.

Dies ist ein sehr einfaches und unkompliziertes einzeiliges Skript. In den meisten Fällen bevorzuge ich diesen Ansatz.

Wenn die Speicherauslastung Ihres Systems 80 % erreicht, wird eine E-Mail ausgelöst.

*/5 * * * * /usr/bin/free | awk '/Mem/{printf("RAM-Nutzung: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | awk '{ if($1 > 80) print $0;}' | mail -s "Warnung: hoher Arbeitsspeicher" [email protected]

HINWEIS: Sie müssen Ihre E-Mail-Adresse ändern, anstatt unsere E-Mail-Adresse zu verwenden. Darüber hinaus können Sie den Schwellenwert für die Speicherauslastung nach Bedarf ändern.

Ausgabe: Sie erhalten eine E-Mail-Benachrichtigung ähnlich der folgenden.

Warnung bei hohem Speicherbedarf: 80,40 %

Wir haben in der Vergangenheit viele nützliche Shell-Skripte hinzugefügt. Wenn Sie diese anzeigen möchten, navigieren Sie bitte zu den folgenden Links.

* Wie lassen sich tägliche Aktivitäten mithilfe von Shell-Skripten automatisieren?

Methode 2: Speicherauslastung überwachen und E-Mails mit einem Linux-Bash-Skript senden

Wenn Sie weitere Informationen zur Speicherauslastung in E-Mail-Benachrichtigungen erhalten möchten. Verwenden Sie das folgende Skript, das die maximale Speicherauslastung und Prozessdetails basierend auf den Befehlen „Top“ und „PS“ enthält.

Dadurch erhalten Sie sofort einen Überblick über die Leistungsfähigkeit Ihres Systems.

Wenn Ihr System eine Speicherauslastung von „80 %“ erreicht, wird eine E-Mail ausgelöst.

HINWEIS: Sie müssen Ihre E-Mail-Adresse ändern, anstatt unsere E-Mail-Adresse zu verwenden. Darüber hinaus können Sie den Schwellenwert für die Speicherauslastung nach Bedarf ändern.

# vi /opt/scripts/memory-alert.sh

#!/bin/sh
ramusage=$(frei | awk '/Mem/{printf("RAM-Nutzung: %.2f\n"), $3/$2*100}' | awk '{print $3}')

wenn [ "$ramusage" > 20 ]; dann

 SUBJECT="ACHTUNG: Die Speicherauslastung auf $(Hostname) ist um $(Datum) hoch"
 NACHRICHT="/tmp/Mail.out"
 AN="[email protected]"
 echo "Aktuelle Speichernutzung ist: $ramusage%" >> $MESSAGE
 echo "" >> $NACHRICHT
 echo "-----------------------------------------------------------------" >> $NACHRICHT
 echo "Der Prozess mit dem höchsten Speicherverbrauch verwendet den Top-Befehl" >> $MESSAGE
 echo "-----------------------------------------------------------------" >> $NACHRICHT
 echo "$(top -b -o +%MEM | head -n 20)" >> $MESSAGE
 echo "" >> $NACHRICHT
 echo "-----------------------------------------------------------------" >> $NACHRICHT
 echo "Prozess mit dem höchsten Speicherverbrauch, der den Befehl ps verwendet" >> $MESSAGE
 echo "-----------------------------------------------------------------" >> $NACHRICHT
 echo "$(ps -eo pid,ppid,%mem,%Speicher,cmd --sort=-%mem | head)" >> $MESSAGE
 mail -s "$BETREFF" "$AN" < $NACHRICHT
 rm /tmp/Mail.out
fi

Fügen Sie abschließend einen Cron-Job hinzu, um diesen Vorgang zu automatisieren. Es wird alle 5 Minuten ausgeführt.

# crontab -e
*/5 * * * * /bin/bash /opt/scripts/memory-alert.sh

HINWEIS: Da die Ausführung des Skripts alle 5 Minuten geplant ist, erhalten Sie nach maximal 5 Minuten (je nach Uhrzeit jedoch auch nach nicht allen 5 Minuten) eine Erinnerung per E-Mail.

Wenn Ihr System beispielsweise einen bestimmten Grenzwert von 8,25 erreicht, erhalten Sie innerhalb von 5 Minuten eine E-Mail-Benachrichtigung. Hoffe, das ist jetzt klar.

Ausgabe: Sie erhalten eine E-Mail-Benachrichtigung ähnlich der folgenden.

Aktuelle Speichernutzung: 80,71 %

+----------------------------------------------------------------------------------+
Der speicherintensivste Prozess mit dem Top-Befehl
+----------------------------------------------------------------------------------+
oben – 12:00:58, 5 Tage aktiv, 9:03, 1 Benutzer, durchschnittliche Auslastung: 1,82, 2,60, 2,83
Aufgaben: 314 insgesamt, 1 läuft, 313 schläft, 0 gestoppt, 0 Zombie
%Cpu0: 8,3 us, 12,5 sy, 0,0 ni, 75,0 id, 0,0 wa, 0,0 hi, 4,2 si, 0,0 st
%Cpu1: 13,6 us, 4,5 sy, 0,0 ni, 81,8 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
%Cpu2: 21,7 us, 21,7 sy, 0,0 ni, 56,5 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
%Cpu3: 13,6 us, 9,1 sy, 0,0 ni, 77,3 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
%Cpu4: 17,4 us, 8,7 sy, 0,0 ni, 73,9 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
%Cpu5: 20,8 us, 4,2 sy, 0,0 ni, 70,8 id, 0,0 wa, 0,0 hi, 4,2 si, 0,0 st
%Cpu6: 9,1 us, 0,0 sy, 0,0 ni, 90,9 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
%Cpu7: 17,4 us, 4,3 sy, 0,0 ni, 78,3 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
KiB-Speicher: 16248588 gesamt, 5015964 frei, 6453404 verwendet, 4779220 Buff/Cache
KiB-Austausch: 17873388 gesamt, 16928620 frei, 944768 genutzt. 6423008 verfügbare Mem

 PID USER PR NI VIRT RES SHR S %CPU %MEM ZEIT+ BEFEHL
17163 daygeek 20 2033204 487736 282888 S 10.0 3.0 8:26.07 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 9408 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /u+
 1121 daygeek 20 4191388 419180 100552 S 5.0 2.6 126:02.84 /usr/bin/gnome-shell
 1902 daygeek 20 1701644 327216 82536 S 20.0 2.0 153:27.92 /opt/google/chrome/chrome
 2969 daygeek 20 1051116 324656 92388 S 15.0 2.0 149:38.09 /opt/google/chrome/chrome --type=renderer --field-trial-handle=10346122902703263820,11905758137655502112,131072 --service-pipe-token=1339861+
 1068 daygeek 20 1104856 309552 278072 S 5.0 1.9 143:47.42 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
27246 daygeek 20 907344 265600 108276 S 30,0 1,6 10:42,80 /opt/google/chrome/chrome --type=renderer --field-trial-handle=10346122902703263820,11905758137655502112,131072 --service-pipe-token=8587368+

+----------------------------------------------------------------------------------+
Der speicherintensivste Prozess bei Verwendung des Befehls „ps“
+----------------------------------------------------------------------------------+
 PID PPID %MEM %CPU CMD
 8223 1 6.4 6.8 /usr/lib/firefox/firefox --neues Fenster
13948 1121 6.3 1.2 /usr/bin/../lib/notepadqq/notepadqq-bin
 8671 8223 4.4 7.5 /usr/lib/firefox/firefox -contentproc -childID 5 -isForBrowser -prefsLen 6999 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
17163 8223 3.0 0.6 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 9408 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
 1121 1078 2.5 1.6 /usr/bin/gnome-shell
17937 8223 2,5 0,8 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 9410 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
 8499 8223 2.2 0.6 /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 6635 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
 8306 8223 2.2 0.8 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab
 9198 8223 2.1 0.6 /usr/lib/firefox/firefox -contentproc -childID 7 -isForBrowser -prefsLen 8604 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab

über: https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-usage-and-send-email/

Autor: Magesh Maruthamuthu Thema: lujun9972 Übersetzer: wxy Korrekturleser: wxy

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. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Starten Sie mithilfe eines Batch-Skripts ein Git-Bash-Fenster in einem bestimmten Verzeichnis
  • Detaillierte Erklärung des Skript-Debugging-Mechanismus in Bash
  • Umgang mit Variablen mit Leerzeichen in Shell-Skripten (Bash-Skripten)
  • Mit dem Bash-Skript können Sie bei jeder Anmeldung an der Shell Linux-Systeminformationen anzeigen
  • Detaillierte Erklärung, wie man ein Passwort an den SSH/SCP-Befehl im Bash-Skript übergibt
  • Beispiel zur Identifizierung des Benutzers mithilfe eines Linux-Bash-Skripts
  • Detaillierte Erklärung der Unterschiede zwischen Quelle, sh, bash und ./ bei der Ausführung von Shell-Skripten
  • Überwachung von Linux-Bash-Skripts, Starten und Stoppen des Skriptschreibens für Weblogic-Dienste
  • So schreiben Sie sichere, voll funktionsfähige Bash-Skripte

<<:  Detaillierte Erklärung zum Anzeigen der Anzahl der MySQL-Server-Threads

>>:  Vue implementiert 3 Möglichkeiten zum Wechseln zwischen Registerkarten und zum Beibehalten des Datenstatus

Artikel empfehlen

Asynchroner Lebenszyklus von AsyncHooks in Node8

Async Hooks ist eine neue Funktion von Node8. Sie...

Implementierung von JavaScript zum Herunterladen und Hochladen verknüpfter Bilder

Da wir Bilder hochladen möchten, müssen wir zunäc...

Details zum Prototypmodus des Javascript-Entwurfsmusters

Inhaltsverzeichnis 1. Prototyp-Modus Beispiel 1 B...

Linux-Plattform MySQL ermöglicht Remote-Login

Während des Entwicklungsprozesses stoße ich häufi...

Zusammenfassung zur Verwendung der Reduce()-Methode in JS

Inhaltsverzeichnis 1. Grammatik 2. Beispiele 3. A...

MySQL-Datenbankbeschränkungen und Prinzipien des Datentabellenentwurfs

Inhaltsverzeichnis 1. Datenbankbeschränkungen 1.1...

HTML-Tutorial, leicht zu erlernende HTML-Sprache

1. <body background=Bilddateiname bgcolor=Farb...

Spezielle Methode zum Hinzufügen von Fremdschlüsseleinschränkungen in MySQL

Die Betriebsumgebung dieses Tutorials: Windows 7-...

Detaillierte Erläuterung des Apache SkyWalking-Alarmkonfigurationshandbuchs

Apache SkyWalking Apache SkyWalking ist ein Tool ...

Vermeiden Sie den Missbrauch zum Lesen von Daten in Vue

Inhaltsverzeichnis Vorwort 1. Der Prozess der Ver...