如何监控内存使用情况?

Jon*_*nas 310 server memory monitoring logging memory-usage

我曾经top看过目前的内存使用情况。但我想监控一段时间内的内存使用情况。比如开始监控,然后执行一些命令,最后停止监控,看看这段时间用了多少内存。

我怎样才能在 Ubuntu 服务器上做到这一点?

我想我可以每 5 秒左右启动一次 cronjob,并调用一个命令,在文本文件中记录当前内存使用情况。但是我应该使用什么命令以易于记录到文本文件的格式获取当前内存使用情况?

Jus*_*rce 372

我建议结合以前的答案

watch -n 5 free -m
Run Code Online (Sandbox Code Playgroud)

请注意,Linux 喜欢使用任何额外的内存来缓存硬盘驱动器块。所以你不想只看免费的Mem. 你想看看free的列-/+ buffers/cache:行。这显示了应用程序可用的内存量。所以我就跑了free -m,得到了这个:

             total       used       free     shared    buffers     cached
Mem:          3699       2896        802          0        247       1120
-/+ buffers/cache:       1528       2170
Swap:         1905         62       1843
Run Code Online (Sandbox Code Playgroud)

我知道我使用的是1528 MB并且有2170 MB可用空间。

注意:要停止此watch循环,您只需按Ctrl+ 即可C

  • `Mem: used` 是你使用的总内存。`-/+ buffers/cache: used` 是您使用的总内存**减去**缓冲区和缓存。我知道输出看起来很有趣,但这里不需要算术。您只是在 -/+ buffers/cache 行中寻找 used/free 。 (9认同)
  • -h 选项要好得多 (8认同)
  • @cbradsh1 您可以只执行 `free -h`,例如 `watch -n 5 free -h` 来获得“人类可读”的输出,例如输出中的 `2.1G` 而不是 `2170`。 (3认同)

Alv*_*var 249

我认为htop是最好的解决方案。

  • sudo apt-get install htop

通过这种方式,您会注意到哪些程序使用了最多的 RAM。如果您愿意,您可以轻松终止一个。这是屏幕截图!

  • `htop` 很好,因为它比 `free` 更“图形化”并且可能更容易阅读。 (3认同)
  • 我不明白输出。`RES` 是该应用程序使用的内存(以 MB 为单位)吗?那么什么是“SHR”呢? (3认同)
  • @faizal:虚拟、保留和共享内存。 (2认同)
  • `htop` 如何向您显示“一段时间内的内存使用情况”? (2认同)

Jas*_*ock 49

如果你在寻找每个正在运行的进程使用的内存的一个很好的细分,那么我会推荐检查出ps_mem.py(发现这里的pixelbeat.org)。

我知道在上面的评论中,您提到想要从free 获得单行快照,但我认为其他人可能会觉得这很有用。

示例输出:

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
Run Code Online (Sandbox Code Playgroud)

我唯一不喜欢的部分是该脚本声称需要 root 权限。我还没有机会确切地看到为什么会这样。

  • 现在可用于 PyPI(`pip install ps_mem`)和 [在 GitHub 上](https://github.com/pixelb/ps_mem)。 (4认同)

Isa*_*iah 25

使用免费命令。例如,这是输出free -m

             total       used       free     shared    buffers     cached
Mem:          2012       1666        345          0        101        616
-/+ buffers/cache:        947       1064
Swap:         7624          0       7624
Run Code Online (Sandbox Code Playgroud)

free -m | grep /+ 将只返回第二行:

-/+ buffers/cache:        947       1064
Run Code Online (Sandbox Code Playgroud)


mgu*_*nes 13

手表命令可能是有用的。尝试watch -n 5 free通过每五秒更新一次来监控内存使用情况。


Ami*_*mir 10

您可以使用cat /proc/meminfo.

MemTotal:        4039160 kB
MemFree:          309796 kB
MemAvailable:    3001052 kB
Buffers:          345636 kB
Cached:          2341288 kB
SwapCached:            8 kB
Active:          1725160 kB
Inactive:        1551652 kB
Active(anon):     538404 kB
Inactive(anon):    70076 kB
Active(file):    1186756 kB
Inactive(file):  1481576 kB
Unevictable:          32 kB
Mlocked:              32 kB
SwapTotal:       4194300 kB
SwapFree:        4194044 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        589988 kB
Mapped:           255972 kB
Shmem:             18596 kB
Slab:             374888 kB
SReclaimable:     310496 kB
SUnreclaim:        64392 kB
KernelStack:        6976 kB
PageTables:        26452 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6213880 kB
Committed_AS:    3589736 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      147392 kB
DirectMap2M:     4046848 kB
Run Code Online (Sandbox Code Playgroud)


小智 5

我刚刚找到了这个解决方案,它工作得很好,通过 CLI 创建了一个图形界面:

# fixed link
git clone https://github.com/aristocratos/bashtop
cd bashtop
bash bashtop
Run Code Online (Sandbox Code Playgroud)

截屏

  • +1 在图形界面上的出色工作。顺便说一句,作者现在建议使用[Python 版本](https://github.com/aristocratos/bpytop)。 (2认同)