Ich schreibe ein Überwachungsskript. Ich führe es auf einer bestimmten Maschine aus und es funktioniert. Es ist geplant, es auf mehreren Linux-Maschinen auszuführen und nicht an eine einzelne Distribution gebunden zu sein.
Hier sind die Befehle und die damit verbundenen Behandlungen, die ich durchführe:
1) CPU-Auslastung:
top -bn 2 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}'
92%
93%
Ich protokolliere beide Werte.
2) RAM-Nutzung
free -m
_____total used free shared buff/cache available <br>
Mem 3791 1183 875 16 1732 2326 <br>
Swap 3071 0 3071
Protokollieren Sie sowohl den verwendeten Speicher als auch den Swap-Speicher insgesamt
3) Festplattennutzung:
df
(behalten Sie nur die Spalten 2 und 3, die jeweils die Gesamtzahl der 1024-Bit-Blöcke und die verwendeten Blöcke angeben):
1K_blocks used_blocks
27740944 1996820
1931168 0
1941352 0
1941352 16904
1941352 0
508588 151576
388272 0
Ich vergleiche die Summen beider Spalten, um den gesamten Speicherplatz zu erhalten.
4) Betriebszeit:
PS C:\> invoke-sshcommand -ComputerName $ip {uptime}
09:39:01 up 13 days, 21:37, 1 user, load average: 0,00, 0,01, 0,05
Schneiden Sie diese Zeichenfolge aus und protokollieren Sie nützliche Daten.
Liefern diese Befehle unabhängig von der Linux-Distribution genau die gleiche Ausgabe? Allgemeiner gefragt: Wäre eine Befehls- und Datenbehandlung bei jeder beliebigen Verteilung noch gültig?
Antwort1
Liefern diese Befehle unabhängig von der Linux-Distribution genau die gleiche Ausgabe?
Vielleicht, aber Sie können sich dessen nicht sicher sein.
Es gibt Hunderte von Linux-Distributionen (DistroWatchzählt 280 davon) und Sie können nicht die Garantie haben, dass ein für einen geschriebenes Skript funktioniert - oder wirdweitermachenzum Arbeiten - auf einem anderen, insbesondere wenn dort eine Nicht-POSIX-Option oder ein Nicht-POSIX-Flag verwendet wird.
Anstatt sich auf die Ausgabe von Befehlen zu verlassen, sollten Sie die Daten direkt aus dem /proc
Pseudodateisystem übernehmen.