Frage Wie kann ich die Speichernutzung überwachen?


Ich habe benutzt top um die Speicherbelegung im Moment zu sehen. Aber ich möchte die Speichernutzung über einen bestimmten Zeitraum überwachen. Beginnen Sie zum Beispiel mit der Überwachung und führen Sie dann einige Befehle aus. Beenden Sie schließlich die Überwachung und sehen Sie, wie viel Speicher in diesem Zeitraum belegt wurde.

Wie kann ich dies auf Ubuntu Server tun?

Ich denke, ich könnte alle 5 Sekunden einen Cronjob starten und einen Befehl aufrufen, der die aktuelle Speichernutzung in einer Textdatei protokolliert. Aber welchen Befehl sollte ich verwenden, um die aktuelle Speichernutzung in einem Format zu erhalten, das leicht in eine Textdatei zu protokollieren ist?


235
2017-10-26 16:50


Ursprung




Antworten:


Ich empfehle, die vorherigen Antworten zu kombinieren

watch -n 5 free -m

Beachten Sie, dass Linux gerne zusätzlichen Speicher verwendet Cache-Festplattenblöcke. Sie wollen also nicht nur das Freie betrachten Mem. Du willst dir das ansehen free Spalte der -/+ buffers/cache: Reihe. Dies zeigt an, wie viel Speicher für Anwendungen verfügbar ist. Also bin ich einfach weggelaufen free -m und habe das:

             total       used       free     shared    buffers     cached
Mem:          3699       2896        802          0        247       1120
-/+ buffers/cache:       1528       2170
Swap:         1905         62       1843

Ich weiß, dass ich benutze 1528 MB und haben 2170 MB frei.

Hinweis: Um das zu stoppen watch Zyklus können Sie einfach drücken Strg+C.


290
2017-10-26 17:40



Danke, das ist informativ. Aber auf der gebrauchten Spalte hast du zuerst 2896 und dann 1528 für Puffer, bedeutet das nicht, dass Sie verwenden 2896 + 1528? - Jonas
Mem: used ist Ihr insgesamt genutzter Speicher. -/+ buffers/cache: used ist Ihr insgesamt genutzter Speicher Minus- Puffer und Cache. Ich weiß, dass die Ausgabe lustig aussieht, aber hier ist keine Arithmetik erforderlich. Sie suchen nur nach verwendet / frei in der - / + Puffer / Cache-Zeile. - Justin Force
Die Option -h ist viel schöner - frmdstryr
@frmdstryr Guter Punkt! -h / - der Mensch existierte nicht, als ich dies schrieb. gitlab.com/procps-ng/procps/commit/... - Justin Force
@ cbradsh1 Du kannst es einfach machen free -h, z.B. watch -n 5 free -h um eine "menschenlesbare" Ausgabe zu erhalten, z.B. 2.1G Anstatt von 2170 in der Ausgabe. - Justin Force


Ich denke htop ist die beste Lösung.

  • sudo apt-get install htop

Auf diese Weise werden Sie bemerken, welche Programme den meisten RAM verwenden. und Sie können einfach einen beenden, wenn Sie möchten. Hier ist ein Screenshot!


191
2018-05-18 00:11



htop ist nett, weil es mehr "grafisch" und möglicherweise einfacher zu lesen ist als free. - mjswensen
Ich verstehe die Ausgabe nicht. Ist RES der von dieser Anwendung in MB verwendete Speicher? Was ist was? SHR? - faizal
@faizal: virtueller, reservierter und geteilter Speicher. - WitchCraft
wie geht es? htop zeigen Ihnen die "Speicherbelegung über einen bestimmten Zeitraum"? - dangel
htop -s M_SHARE htop -s TIME - Tomachi


Wenn Sie nach einem schönen Speicherauszug suchen, der von jedem laufenden Prozess verwendet wird, dann würde ich Ihnen vielleicht empfehlen, das System auszuprobieren ps_mem.py (gefunden Hier bei pixelbeat.org).

Ich weiß in den obigen Kommentaren, dass Sie einen One-Line-Snapshot haben wollten frei, aber ich dachte, andere könnten das nützlich finden.

Beispielausgabe:

user@system:~$ sudo ps_mem.py
[sudo] password for user:
 Private  +   Shared  =  RAM used       Program

  4.0 KiB +   7.5 KiB =  11.5 KiB       logger
  4.0 KiB +   8.0 KiB =  12.0 KiB       mysqld_safe
  4.0 KiB +  10.0 KiB =  14.0 KiB       getty
  4.0 KiB +  42.0 KiB =  46.0 KiB       saslauthd (5)
 48.0 KiB +  13.0 KiB =  61.0 KiB       init
 56.0 KiB +  27.5 KiB =  83.5 KiB       memcached
 84.0 KiB +  26.5 KiB = 110.5 KiB       cron
120.0 KiB +  50.0 KiB = 170.0 KiB       master
204.0 KiB + 107.5 KiB = 311.5 KiB       qmgr
396.0 KiB +  94.0 KiB = 490.0 KiB       tlsmgr
460.0 KiB +  65.0 KiB = 525.0 KiB       rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB       sudo
476.0 KiB +  83.0 KiB = 559.0 KiB       monit
568.0 KiB +  60.0 KiB = 628.0 KiB       freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB       pickup
  1.1 MiB +  80.0 KiB =   1.2 MiB       bash
  1.4 MiB + 308.5 KiB =   1.7 MiB       fail2ban-server
888.0 KiB +   1.0 MiB =   1.9 MiB       sshd (3)
  1.9 MiB +  32.5 KiB =   1.9 MiB       munin-node
 13.1 MiB +  86.0 KiB =  13.2 MiB       mysqld
147.4 MiB +  36.5 MiB = 183.9 MiB       apache2 (7)
---------------------------------
                        208.1 MiB
=================================

 Private  +   Shared  =  RAM used       Program

Der einzige Teil, den ich nicht mag, ist die Tatsache, dass das Skript root-Rechte verlangt. Ich hatte noch keine Gelegenheit, genau zu sehen, warum das so ist.


38
2017-10-26 17:19



Ich frage mich, ob Speicher zwischen Threads geteilt wird. Es wird zwischen Prozessen geteilt, nicht wahr? Zumindest unter Windows ... - Thomas Weller
In diesem Fall bezieht sich der gemeinsame Speicher auf Seiten, die von mehreren Prozessen in Form von gemeinsam genutzten Bibliotheken zugeordnet werden. Zusätzlich ist der gesamte Prozessspeicherplatz im Kontext einer Multithread-Anwendung für alle Threads in diesem Prozess zugänglich. - Jason Mock
Jetzt verfügbar in PyPI (pip install ps_mem) und auf GitHub. - Leif Arne Storset
@ThomasWeller: Ja, Threads teilen immer Speicher, während Prozesse unter bestimmten Bedingungen einige oder alle teilen können. - Leif Arne Storset
dafür benutze ich gnome-system-monitor - jms


Benutze die frei Befehl. Zum Beispiel ist dies der Ausgang von free -m:

             total       used       free     shared    buffers     cached
Mem:          2012       1666        345          0        101        616
-/+ buffers/cache:        947       1064
Swap:         7624          0       7624

free -m | grep /+ gibt nur die zweite Zeile zurück:

-/+ buffers/cache:        947       1064

22
2017-10-26 17:27



Danke, sieht gut aus. Also das 947 ist die Speichernutzung abzüglich des für Puffer und Caches verwendeten Speichers? - Jonas


Das Uhr Befehl kann nützlich sein. Versuchen watch -n 5 free Überwachen der Speichernutzung mit Updates alle fünf Sekunden.


9
2018-01-19 20:09



Danke, das war großartig! Allerdings würde ich es vorziehen, die Speicherauslastung in einer einzelnen Zeile zu erhalten, so dass es einfach ist, sich in eine Textdatei einzuloggen. - Jonas


Zur visuellen Überwachung der gesamten RAM-Nutzung, wenn Sie verwenden ByobuEs wird Ihre Speicherbelegung in der unteren rechten Ecke des Terminals halten und läuft, während Sie sich in einer Terminalsitzung befinden.

Wie Sie auf dem Screenshot sehen können, hat meine virtuelle Maschine eine Betriebszeit von 1h3m, eine Auslastung von 0.00, einen Prozessor mit 2.8GHz (virtuell) und 994MB (21%) des auf dem System verfügbaren Arbeitsspeichers.

Byobu in use


4
2018-04-16 19:15





Sie können es mit verwenden cat /proc/meminfo.

enter image description here


3
2017-09-27 13:30



das Hinzufügen der Uhr an der Vorderseite dieses Befehls macht es super! wie in watch cat /proc/meminfo - Elder Geek
Das free Befehl nimmt seine Informationen von /proc/meminfo und präsentiert sie in einer kompakten Art und Weise. Benutzen free -h für menschenlesbare Ausgabe. - LoMaPh


Einzeilige Lösung und Ausgabe:

free -m | grep "Mem:"

Hier ist ein Beispiel für die erwartete Ausgabe:

enter image description here


3
2017-10-26 18:01



Dadurch sehen Sie auch die Speicherbelegung im Moment ... - mook765


ich würde ... benutzen Kakteen. Dadurch wird die Speicherauslastung für einen bestimmten Zeitraum grafisch dargestellt und Sie können die Verwendung mit Ihrem Webbrowser überprüfen.


1
2017-10-22 15:32