本文是作者学习及应用笔记,以CentOS 6.7和CentOS 7.X为例,介绍Linux中查看内存占用情况的free、top命令的常见用法及对比。
[ ~]# cat /etc/redhat-release
CentOS release 6.7 (Final)
[ ~]#
[ ~]# uname -a
Linux 2.6.32-573.8.1.el6.x86_64 #1 SMP Tue Nov 10 18:01:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[ ~]#
[ ~]# free -mlt
total used free shared buffers cached
Mem: 994 866 128 0 207 387
Low: 994 866 128
High: 0 0 0
-/+ buffers/cache: 271 723
Swap: 0 0 0
Total: 994 866 128
[ ~]#
上例为CENTOS 6.7,重点关注buffers/cache中的free = 723那项,表示可用的空余内存为723MB,其余的项都可以不管。
CENTOS7.3的free命令已有变化,请参见本文末尾附录CENTOS 7.3,free直接给出了空余内存available = 61,即61GB空余。同时,新版本的free增加了-h选项,支持以人性化的单位(K/M/G)显示各个数值。
[ ~]# top -bn1 -a | head -n 10
top - 22:37:24 up 154 days, 4:57, 1 user, load average: 0.02, 0.03, 0.00
Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.5%id, 0.2%wa, 0.0%hi, 0.0%si, 0.1%st
Mem: 1018508k total, 887376k used, 131132k free, 212380k buffers
Swap: 0k total, 0k used, 0k free, 396972k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25136 mongodb 20 0 645m 53m 7388 S 0.0 5.4 205:33.86 mongod
18729 root 20 0 103m 34m 828 S 0.0 3.4 24:46.64 redis-server
22333 mysql 20 0 695m 29m 3296 S 0.0 3.0 17:54.86 mysqld
在CENTOS 6.7中,top支持-a选项,不支持-o选项。-a选项可以按各进程内存占用从大到小排序。
在CENTOS 7.3中,top不支持-a选项,支持-o选项。-o “%CPU”是按CPU使用率排序;-o “%MEM”是按内存占用排序,这个与6.7版本的-a含义相同。具体请参见如下附录。
[CENTOS73 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[CENTOS73 ~]#
[CENTOS73 ~]# uname -a
Linux CENTOS73 3.10.0-514.21.2.el7.x86_64 #1 SMP Tue Jun 20 12:24:47 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[CENTOS73 ~]#
[CENTOS73 ~]#
[CENTOS73 ~]# top -bn1 -o "%MEM" | head
top - 22:42:44 up 39 days, 1:30, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 293 total, 1 running, 292 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 65798332 total, 63365896 free, 1111540 used, 1320896 buff/cache
KiB Swap: 33030140 total, 33030140 free, 0 used. 64057156 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3512 root 20 0 2319720 225432 49512 S 0.0 0.3 23:43.69 gnome-shell
3739 root 20 0 1515744 65180 21744 S 0.0 0.1 0:00.86 evolution-calen
3653 root 39 19 1308088 40700 7832 S 0.0 0.1 0:00.39 tracker-extract
[CENTOS73 ~]#
[CENTOS73 ~]# top -bn1 -o "%CPU" | head
top - 22:42:49 up 39 days, 1:30, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 293 total, 1 running, 292 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 65798332 total, 63366392 free, 1111044 used, 1320896 buff/cache
KiB Swap: 33030140 total, 33030140 free, 0 used. 64057652 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 196468 7572 3972 S 0.0 0.0 2:33.80 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:01.12 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:06.62 ksoftirqd/0
[CENTOS73 ~]#
[CENTOS73 ~]#
[CENTOS73 ~]# free -mlht
total used free shared buff/cache available
Mem: 62G 1.1G 60G 73M 1.3G 61G
Low: 62G 2.3G 60G
High: 0B 0B 0B
Swap: 31G 0B 31G
Total: 94G 1.1G 91G
[CENTOS73 ~]#
-b :Batch-mode operation
Starts top in Batch mode, which could be useful for sending output from top to other programs or to a file. In this
mode, top will not accept input and runs until the iterations limit you've set with the `-n' command-line option or
until killed.
-n :Number-of-iterations limit as: -n number
Specifies the maximum number of iterations, or frames, top should produce before ending.