overzicht
soms moeten we controleren op de totale geheugengrootte op een server waarop Linux draait of moeten we geheugenstatistieken gebruiken in shell-scripts. Gelukkig hebben we toegang tot tal van tools die we kunnen gebruiken om te controleren op totale fysieke geheugen. In deze tutorial gaan we verschillende benaderingen nemen om dat doel te dienen met behulp van verschillende handige commando ‘ s en tools.
2. free Command
free is de eenvoudigste van alle commando ‘ s die we zullen zien. Het wordt gebruikt om het fysieke en wisselgeheugengebruik af te drukken — standaard wordt het afgedrukt naar standaarduitvoer. Het gratis commando is een van de veelgebruikte commando ‘ s om snel te controleren op RAM statistieken omdat het beschikbaar is op de meeste Linux distributies. We kunnen gewoon het gratis commando op onze terminal typen zonder enige vlaggen:
$ free
total used free shared buff/cache availableMem: 8021048 1320432 5689744 335556 1010872 6121932Swap: 0 0 0
zoals we kunnen, wordt de grootte van het fysieke geheugen afgedrukt in bytes. We kunnen de uitvoer echter eenvoudig afdrukken in een leesbaar formaat met de vlag-h of-human:
$ free -h
total used free shared buff/cache availableMem: 7.6Gi 1.3Gi 5.4Gi 318Mi 985Mi 5.8GiSwap: 0B 0B 0B
zoals te zien is in de output hierboven, hebben we een totaal van 7.6 GiB RAM. Bovendien zijn er tal van andere opties die kunnen worden gebruikt om de uitvoer af te drukken in het formaat dat we willen, zoals –kilo, –mega, –Giga, enzovoort. Nog een interessante optie is de-s optie:
$ free -h -s 5
de-S vlag staat voor seconden, dus free zal het RAM gebruik elke 5 seconden afdrukken in dit voorbeeld. Het is vooral handig als we het RAM-gebruik met een opgegeven interval willen controleren. We kunnen het proces eenvoudig beëindigen met de sneltoets Ctrl + C.
3. vmstat Commando
net als het vrije commando is vmstat (virtual memory statistics) ook beschikbaar op de meeste Linux distributies. Wanneer we de opdracht vmstat typen, wordt standaard het vrije, gebufferde en in de cache opgeslagen geheugen afgedrukt naast swap, CPU, IO en systeeminformatie:
$ 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
de vlag-w of-wide drukt de uitvoer af in een breed leesbaar formaat. Omdat we geïnteresseerd zijn in de totale RAM-grootte, gaan we de-s of –stats vlag toevoegen:
$ 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
de eerste regel in de uitvoer is totale fysieke RAM. Soms hebben we niet alle info nodig, dus kunnen we grep gebruiken om alleen het gewenste item te extraheren:
$ vmstat -s | grep -i 'total memory' | sed 's/ *//'
8021048 K total memory
4. top Commando
top is in principe een opdrachtregel Taakbeheer met een real-time uitvoer. Het wordt gebruikt om de lopende processen in een schone tabel lay-out te controleren. Het toont ons ook de CPU, RAM en systeeminformatie in het algemeen. We kunnen het starten door simpelweg het bovenste commando uit te voeren:
$ 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
bovenaan kunnen we de geheugeninformatie naast het Mem veld zien en zien dat we in totaal 7833 MiB RAM hebben.
5. dmidecode Utility
dmidecode is een hulpmiddel dat informatie over hardwarecomponenten – zoals hardwarespecificaties, serienummers en BIOS – versies-in een voor mensen leesbaar formaat afdrukt. De hardware-informatie wordt uit de DMI-tabel gehaald. We kunnen het ook gebruiken om interessante informatie over ons systeem te vinden, zoals het maximale ondersteunde geheugen.
5.1. Het installeren van dmidecode
dmidecode is niet standaard geïnstalleerd op sommige Linux distributies, dus we gaan het eerst installeren. We kunnen dmidecode rechtstreeks installeren vanuit onze distributie repository met behulp van een pakketbeheerder.
Voor Ubuntu-gebaseerde distributies kunnen we het pakket installeren via apt:
# apt install dmidecode
voor RHEL, Fedora en CentOS kunnen we yum gebruiken:
# yum install dmidecode
gebruik op Arch-gebaseerde distributies gewoon pacman:
# pacman -Sy dmidecode
5.2. Met behulp van dmidecode
zodra de installatie voltooid is, kunnen we het dmidecode commando uitvoeren vanaf onze terminal:
# dmidecode
we moeten root privileges hebben om dmidecode uit te voeren. Zodra we het commando uitvoeren, kunnen we gedetailleerde hardware informatie zien. Het bevat veel informatie met betrekking tot onze hardwarecomponenten, maar we zijn alleen geïnteresseerd in onze totale geheugengrootte.
gelukkig kunnen we de optie –type aan het commando geven voor verschillende componenten zoals BIOS, geheugen, processor, temperaturen, enzovoort. De optie-type verwacht een getal voor DMI-typen.
in ons geval willen we kijken naar het geheugen DMI-type, dat kan worden benaderd met de toegewezen nummers 5, 6, 16, 17, 18, 19, 20, 21, en 22. Echter, we zijn geïnteresseerd in het nummer 19, die de RAM-apparaten die momenteel zijn gekoppeld aan de sleuven op ons moederbord zal afdrukken:
# 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
zoals we kunnen zien, hebben we slechts een enkel RAM-apparaat met 8 GB totale grootte geïnstalleerd in een van de RAM-sleuven.
6. / proc / meminfo virtueel bestand
de map / proc is een speciaal type map dat virtuele bestanden bevat. Deze virtuele bestanden zijn een manier om een kijkje te nemen in de Linux kernel, processen en configuraties. Deze bestanden bestaan eigenlijk niet op de schijf en nemen geen ruimte in beslag, maar ze worden gemaakt wanneer ze worden gelezen. Toegang tot sommige bestanden vereist root-toegang.
er is een speciaal virtueel bestand met de naam meminfo, in de / proc directory, dat gelezen kan worden met commando ‘ s als cat en minder. Het meminfo bestand bevat informatie over onze fysieke geheugengrootte en andere nuttige informatie. Laten we het /proc/meminfo bestand lezen met cat:
$ cat /proc/meminfo
in het voorbeeld hierboven hebben we het cat commando gebruikt, wat een handig hulpprogramma is dat kan lezen van een bestand of standaardinvoer. Als het commando eenmaal is uitgevoerd, zal het /proc/meminfo lezen en ons een lange uitvoer geven met betrekking tot ons fysieke geheugen. We zijn alleen geïnteresseerd in de totale RAM-grootte, die verschijnt in de top drie regels van de uitvoer:
$ cat /proc/meminfo | head -n 3
MemTotal: 8021048 kBMemFree: 4542960 kBMemAvailable: 5155668 kB
we hebben alleen de regels afgedrukt waarin we geïnteresseerd zijn door het hoofdcommando te gebruiken. Het argument-n dat aan het head commando wordt gegeven, wordt gebruikt om het aantal te lezen regels aan te geven. De afmetingen zijn gedrukt in kilobytes en zouden ons een idee moeten geven van wat ons totale, vrije en beschikbare fysieke geheugen is.
stel dat we een Bash script schrijven waar we de fysieke RAM grootte moeten verwerken. Dat kunnen we bereiken door eerst het bestand / proc / meminfo te lezen en vervolgens de totale geheugengrootte te 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"
laten we nu het script opslaan en het uitvoerbaar maken:
$ chmod +755 totalram.sh$ ./totalram.shTotal RAM: 8021048 kB
met behulp van GUI Task Managers
er zijn verschillende GUI task managers die we kunnen gebruiken om te controleren op CPU, RAM en netwerkgebruik naast het beheren van processen. Laten we eens een snelle blik op de meest populaire Voor Linux.
7.1. GNOME-Systeemmonitor
GNOME-Systeemmonitor is de standaardtaakbeheerder die wordt meegeleverd met de GNOME-bureaubladomgeving. Echter, als we een andere desktop omgeving draaien, kunnen we gemakkelijk zoeken naar het GNOME-system-monitor pakket op onze distributie pakket repository. Zodra het is geïnstalleerd, kunnen we het starten vanaf de opdrachtregel:
$ gnome-system-monitor
na het navigeren naar het tabblad Hulpbronnen, kunnen we onze totale geheugengrootte onder andere statistieken zien.
7.2. KSysGuard
KSysGuard is de standaard Taakbeheer ontwikkeld door de KDE-gemeenschap en wordt standaard geleverd met KDE. Evenzo, als we een andere desktop omgeving gebruiken, kunnen we het eenvoudig installeren op ons systeem door te zoeken naar het ksysguard pakket in de pakket repository. We kunnen het starten met het ksysguard Commando zodra het is geïnstalleerd:
$ ksysguard
zodra ksysguard start, kunnen we naar het tabblad systeembelasting gaan en onze geheugeninformatie zien samen met een mooie grafiek.
conclusie
In dit artikel hebben we gekeken naar verschillende commando ‘ s en tools die ons kunnen helpen de fysieke geheugengrootte van ons Linux systeem te achterhalen.
we hebben het minimale vrije commando en het alternatieve vmstat Commando behandeld. Vervolgens gebruikten we het bovenste commando om verschillende systeeminformatie te achterhalen. We hebben ook gekeken naar het hulpprogramma dmidecode en hoe we de fysieke geheugeninformatie uit de DMI-tabel kunnen halen.
daarna hebben we geleerd wat de /proc directory is en hoe we het /proc/meminfo bestand kunnen lezen om te controleren op de totale RAM grootte en het te gebruiken in een bash script. Tot slot leerden we over een paar grafische taakmanagers en hoe we ze kunnen gebruiken om te controleren op RAM-gebruik en statistieken.
als je een paar jaar ervaring hebt in het Linux ecosysteem, en je bent geà nteresseerd in het delen van die ervaring met de gemeenschap, kijk dan eens naar onze Bijdragerichtlijnen.