Übersicht
Manchmal müssen wir möglicherweise die Gesamtspeichergröße auf einem Server unter Linux überprüfen oder Speicherstatistiken in Shell-Skripten verwenden. Glücklicherweise haben wir Zugriff auf zahlreiche Tools, mit denen wir den gesamten physischen Speicher überprüfen können. In diesem Tutorial werden wir verschiedene Ansätze verfolgen, um diesem Zweck zu dienen, indem wir mehrere nützliche Befehle und Tools verwenden.
2. free Command
free ist der einfachste aller Befehle, die wir sehen werden. Es wird verwendet, um die physische und Swap—Speichernutzung zu drucken – standardmäßig wird es auf Standardausgabe gedruckt. Der Befehl free ist einer der am häufigsten verwendeten Befehle, um schnell nach RAM-Statistiken zu suchen, da er auf den meisten Linux-Distributionen verfügbar ist. Wir können einfach den Befehl free auf unserem Terminal ohne Flags eingeben:
$ free
total used free shared buff/cache availableMem: 8021048 1320432 5689744 335556 1010872 6121932Swap: 0 0 0
Wie wir können, wird die Größe des physischen Speichers in Bytes gedruckt. Mit dem Flag -h oder –human können wir die Ausgabe jedoch problemlos in einem für Menschen lesbaren Format drucken:
$ free -h
total used free shared buff/cache availableMem: 7.6Gi 1.3Gi 5.4Gi 318Mi 985Mi 5.8GiSwap: 0B 0B 0B
Wie in der obigen Ausgabe zu sehen ist, haben wir insgesamt 7.6 GiB RAM. Darüber hinaus gibt es viele andere Optionen, mit denen die Ausgabe in dem von uns gewünschten Format gedruckt werden kann, z. B. –Kilo, –Mega, –Giga usw. Eine weitere interessante Option ist die Option -s:
$ free -h -s 5
Das Flag -s steht für Sekunden, sodass free in diesem Beispiel die RAM-Auslastung alle 5 Sekunden ausgibt. Dies ist besonders nützlich, wenn wir die RAM-Auslastung in einem bestimmten Intervall überwachen möchten. Wir können den Prozess einfach mit der Tastenkombination Strg + C beenden.
3. vmstat-Befehl
Wie der Free-Befehl ist vmstat (Virtual Memory Statistics) auch auf den meisten Linux-Distributionen verfügbar. Wenn wir den Befehl vmstat eingeben, wird standardmäßig der freie, gepufferte und zwischengespeicherte Speicher sowie Swap-, CPU-, E / A- und Systeminformationen gedruckt:
$ vmstat -w
--procs-- -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu-------- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 5352900 56816 1053708 0 0 162 73 328 1087 18 4 78 0 0
Das Flag –w oder -wide gibt die Ausgabe in einem breiten lesbaren Format aus. Da wir an der gesamten RAM-Größe interessiert sind, fügen wir das Flag -s oder –stats hinzu:
$ vmstat -s
8021048 K total memory 1564516 K used memory 305336 K active memory 1962636 K inactive memory 5391588 K free memory 58224 K buffer memory 1006720 K swap cache 0 K total swap 0 K used swap 0 K free swap 76393 non-nice user cpu ticks 5 nice user cpu ticks 14122 system cpu ticks 337834 idle cpu ticks 1790 IO-wait cpu ticks 1463 IRQ cpu ticks 614 softirq cpu ticks 0 stolen cpu ticks 617253 pages paged in 310410 pages paged out 0 pages swapped in 0 pages swapped out 1426200 interrupts 4722588 CPU context switches 1625563254 boot time 1949 forks
Der erste Eintrag in der Ausgabe ist der gesamte physische RAM. Manchmal benötigen wir nicht alle Informationen, sodass wir mit grep nur den gewünschten Eintrag extrahieren können:
$ vmstat -s | grep -i 'total memory' | sed 's/ *//'
8021048 K total memory
4. top Command
top ist im Grunde ein Befehlszeilen-Task-Manager mit einer Echtzeitausgabe. Es wird verwendet, um die laufenden Prozesse in einem sauberen Tabellenlayout zu überprüfen. Es zeigt uns auch die CPU-, RAM- und Systeminformationen im Allgemeinen. Wir können es starten, indem wir einfach den Befehl top ausführen:
$ top
top - 15:18:13 up 57 min, 1 user, load average: 3.40, 3.26, 2.04Tasks: 138 total, 1 running, 137 sleeping, 0 stopped, 0 zombie%Cpu(s): 17.2 us, 3.6 sy, 0.0 ni, 77.5 id, 0.3 wa, 0.9 hi, 0.5 si, 0.0 stMiB Mem : 7833.1 total, 4665.9 free, 1782.3 used, 1384.8 buff/cachetop - 15:18:49 up 57 min, 1 user, load average: 2.61, 3.08, 2.03Tasks: 138 total, 1 running, 137 sleeping, 0 stopped, 0 zombietop - 15:18:58 up 58 min, 1 user, load average: 2.45, 3.02, 2.02MiB Swap: 0.0 total, 0.0 free, 0.0 used. 5324.5 avail Mem
Oben sehen wir die Speicherinformationen neben dem Mem-Feld und stellen fest, dass wir insgesamt 7833 MB RAM haben.
5. dmidecode Utility
dmidecode ist ein Hilfsprogramm, das Informationen über Hardwarekomponenten – wie Hardwarespezifikationen, Seriennummern und BIOS–Versionen – in einem für Menschen lesbaren Format ausgibt. Die Hardwareinformationen werden aus der DMI-Tabelle extrahiert. Wir können es auch verwenden, um interessante Informationen über unser System zu finden, z. B. den maximal unterstützten Speicher.
5.1. Installieren von dmidecode
dmidecode ist auf einigen Linux-Distributionen standardmäßig nicht installiert, daher werden wir es zuerst installieren. Wir können dmidecode direkt aus unserem Distributions-Repository mit einem Paketmanager installieren.
Für Ubuntu-basierte Distributionen können wir das Paket über apt installieren:
# apt install dmidecode
Für RHEL, Fedora und CentOS können wir yum verwenden:
# yum install dmidecode
Verwenden Sie auf Arch-basierten Distributionen einfach Pacman:
# pacman -Sy dmidecode
5.2. Mit dmidecode
Sobald die Installation abgeschlossen ist, können wir den Befehl dmidecode von unserem Terminal aus ausführen:
# dmidecode
Wir benötigen Root-Rechte, um dmidecode auszuführen. Sobald wir den Befehl ausführen, können wir detaillierte Hardwareinformationen anzeigen. Es enthält viele Informationen zu unseren Hardwarekomponenten, aber wir interessieren uns nur für unsere Gesamtspeichergröße.
Glücklicherweise können wir dem Befehl die Option –type für verschiedene Komponenten wie BIOS, Speicher, Prozessor, Temperaturen usw. zuführen. Die Option -type erwartet eine Zahl für DMI-Typen.
In unserem Fall möchten wir uns den Speicher-DMI-Typ ansehen, auf den mit den zugewiesenen Nummern zugegriffen werden kann 5, 6, 16, 17, 18, 19, 20, 21, und 22. Wir interessieren uns jedoch für die Nummer 19, mit der die RAM-Geräte gedruckt werden, die derzeit an die Steckplätze unseres Motherboards angeschlossen sind:
# dmidecode --type 19
# dmidecode 3.3Getting SMBIOS data from sysfs.SMBIOS 3.0.0 present.Handle 0x0049, DMI type 19, 31 bytesMemory Array Mapped AddressStarting Address: 0x00000000000Ending Address: 0x001FFFFFFFFRange Size: 8 GBPhysical Array Handle: 0x0044Partition Width: 1
Wie wir sehen können, haben wir nur ein einziges RAM-Gerät mit 8 GB Gesamtgröße in einem der RAM-Steckplätze installiert.
6. /proc/meminfo Virtual File
Das Verzeichnis /proc ist ein spezieller Verzeichnistyp, der virtuelle Dateien enthält. Diese virtuellen Dateien sind eine Möglichkeit, einen Blick auf den Linux-Kernel, Prozesse und Konfigurationen zu werfen. Diese Dateien sind nicht auf der Festplatte vorhanden und belegen keinen Speicherplatz, werden jedoch beim Lesen erstellt. Der Zugriff auf einige der Dateien erfordert Root-Zugriff.
Es gibt eine spezielle virtuelle Datei namens meminfo im Verzeichnis /proc, die mit Befehlen wie cat und less gelesen werden kann. Die Meminfo-Datei enthält unter anderem Informationen zu unserer physischen Speichergröße. Lesen wir die Datei / proc / meminfo mit cat:
$ cat /proc/meminfo
Im obigen Beispiel haben wir den Befehl cat verwendet, ein nützliches Dienstprogramm, das aus einer Datei oder einer Standardeingabe lesen kann. Sobald der Befehl ausgeführt wird, liest er / proc / meminfo und präsentiert uns eine lange Ausgabe in Bezug auf unseren physischen Speicher. Wir interessieren uns nur für die gesamte RAM-Größe, die in den oberen drei Zeilen der Ausgabe angezeigt wird:
$ cat /proc/meminfo | head -n 3
MemTotal: 8021048 kBMemFree: 4542960 kBMemAvailable: 5155668 kB
Mit dem Befehl head haben wir nur die Zeilen gedruckt, an denen wir interessiert sind. Das Argument -n für den Befehl head wird verwendet, um die Anzahl der zu lesenden Zeilen anzugeben. Die Größen werden in Kilobyte gedruckt und sollten uns eine Vorstellung davon geben, was unser gesamter, freier und verfügbarer physischer Speicher ist.
Nehmen wir an, wir schreiben ein Bash-Skript, in dem wir die physische RAM-Größe verarbeiten müssen. Wir können dies erreichen, indem wir zuerst die Datei /proc/meminfo lesen und dann die Gesamtspeichergröße grep:
#!/bin/bashtotal_ram () { local totalram=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o ']*') echo $totalram}ram_size=$(total_ram)echo "Total RAM: $ram_size kB"
Speichern wir nun das Skript und machen es ausführbar:
$ chmod +755 totalram.sh$ ./totalram.shTotal RAM: 8021048 kB
Verwenden von GUI-Task-Managern
Es gibt eine Vielzahl von GUI-Task-Managern, mit denen wir neben der Verwaltung von Prozessen auch die CPU-, RAM- und Netzwerkauslastung überprüfen können. Werfen wir einen kurzen Blick auf die beliebtesten für Linux.
7.1. GNOME System Monitor
GNOME System Monitor ist der Standard-Task-Manager, der mit der GNOME-Desktop-Umgebung ausgeliefert wird. Wenn wir jedoch eine andere Desktop-Umgebung ausführen, können wir problemlos nach dem gnome-system-monitor-Paket in unserem Distributionspaket-Repository suchen. Sobald es installiert ist, können wir es über die Befehlszeile starten:
$ gnome-system-monitor
Beim Navigieren zur Registerkarte Ressourcen können wir unter anderem unsere Gesamtspeichergröße sehen.
7.2. KSysGuard
KSysGuard ist der Standard-Task-Manager, der von der KDE-Community entwickelt wurde und standardmäßig mit KDE geliefert wird. Wenn wir eine andere Desktop-Umgebung verwenden, können wir sie einfach auf unserem System installieren, indem wir im Paket-Repository nach dem ksysguard-Paket suchen. Wir können es mit dem Befehl ksysguard starten, sobald es installiert ist:
$ ksysguard
Sobald ksysguard gestartet ist, können wir zur Registerkarte Systemlast gehen und unsere Speicherinformationen zusammen mit einem schönen Diagramm anzeigen.
Fazit
In diesem Artikel haben wir uns verschiedene Befehle und Tools angesehen, mit denen wir die physische Speichergröße unseres Linux-Systems ermitteln können.
Wir haben den Befehl minimal free und seinen alternativen Befehl vmstat behandelt. Dann haben wir den Befehl top verwendet, um verschiedene Systeminformationen herauszufinden. Wir haben uns auch das Dienstprogramm dmidecode angesehen und wie wir die physischen Speicherinformationen aus der DMI-Tabelle extrahieren können.
Danach erfuhren wir, was das Verzeichnis /proc ist und wie wir die Datei /proc/meminfo lesen können, um die gesamte RAM-Größe zu überprüfen und sie in einem Bash-Skript zu verwenden. Schließlich lernten wir einige grafische Task-Manager kennen und wie wir sie verwenden können, um nach RAM-Auslastung und Statistiken zu suchen.
Wenn Sie ein paar Jahre Erfahrung im Linux-Ökosystem haben und diese Erfahrung mit der Community teilen möchten, werfen Sie einen Blick auf unsere Beitragsrichtlinien.