优秀的编程知识分享平台

网站首页 > 技术文章 正文

Linux 学习笔记之常用命令free/top

nanyue 2024-08-18 19:55:59 技术文章 7 ℃

对于上节的 df/du 磁盘的命令操作,大家都学会了么,没学会的同学,请回去再看一次哦,继续上节的学习方向,今天给大家讲讲另外两个常用命令free/top,这两个命令也是系统巡检的主要内容之一。

命令注释:

free 用于显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

写法

free [-bkmotV][-s <间隔秒数>]

参数注释

b/k/m 以 byte、kb、Mb三种单位显示内存使用情况

h 与 df/du 中的一样,以合适的单位来显示

t 显示内存总量

V 显示版本信息

实例

[root@Node2 ~]# free
             total       used       free     shared    buffers     cached
Mem:     132245036   95522316   36722720          0     153052   37447028
-/+ buffers/cache:   57922236   74322800
Swap:      2031612        280    2031332
[root@Node2 ~]# free -g
             total       used       free     shared    buffers     cached
Mem:           126         91         35          0          0         35
-/+ buffers/cache:         55         70
Swap:            1          0          1
[root@Node2 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:        129145      93295      35849          0        150      36573
-/+ buffers/cache:      56572      72573
Swap:         1983          0       1983

从上面的命令显示中,大家可以对比一下不同,另外也给大家说一下,Mem(内存容量),cache(缓存),swap(交换区,类似于 windows 的虚拟内存)。这里特别注意的是 swap 分区的使用,当它满的时候,系统就会出现卡、无法正常启动应用等等问题。

命令注释

top 用于实时显示 process 的动态情况,类似 Windows 下的任务管理器。

写法

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
top - 15:52:38 up 28 days, 20 min,  3 users,  load average: 1.92, 2.21, 2.02
Tasks: 467 total,   1 running, 464 sleeping,   2 stopped,   0 zombie
Cpu(s):  3.9%us,  2.7%sy,  0.0%ni, 92.1%id,  1.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  132245036k total, 95598736k used, 36646300k free,   157796k buffers
Swap:  2031612k total,      280k used,  2031332k free, 37507204k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                  
  4839 root      20   0 33.1g  31g 2552 S 190.7 24.9  54929:42 qemu-kvm                                                                                
  4385 root      20   0 8718m 4.9g 5072 S  4.6  3.9   2582:43 qemu-kvm                                                                                 
 55545 root      20   0 98.2m 4536 3392 S  2.0  0.0   0:17.30 sshd                                                                                     
  4441 root      20   0 1468m  31m 2564 S  1.0  0.0   1277:27 glusterfsd                                                                               
  4464 root      20   0 18.2g  17g 2908 S  1.0 14.1   1226:24 glusterfs                                                                                
 55633 root      20   0 15468 1704 1000 S  1.0  0.0   0:10.71 top                                                                                      
 66148 root      20   0 15340 1516  908 R  1.0  0.0   0:01.09 top                                                                                      
    10 root      20   0     0    0    0 S  0.3  0.0  22:00.51 rcu_sched                                                                                
  3441 root      16  -4 91176  640  464 S  0.3  0.0   0:34.11 auditd                                                                                   
  3771 root      20   0     0    0    0 S  0.3  0.0  62:38.65 jbd2/dm-3-8                                                                              
  4840 root      20   0     0    0    0 S  0.3  0.0  10:14.27 kvm-pit/4839                                                                             
  4904 root       0 -20     0    0    0 S  0.3  0.0   2:40.10 kworker/14:1H                                                                            
 55338 root      20   0     0    0    0 S  0.3  0.0   0:02.45 kworker/u240:3

上面的数据都是实时的,实际的效果看下图

为了大家更好地理解里面的意思,就再多说两句:

图中第一二行:系统运行时间,有3个用户,其中最重要的 load average后三个数字分别为1分钟、5分钟、15分钟单核CPU 的负载系数,最重要的指标是最后一个数字,即前15分钟的平均CPU负载,这个数字越小越好。所谓CPU负载指的是一段时间内任务队列的长度,通俗地讲,就是一段时间内一共有多少任务在使用或等待使用CPU。计算方法:当前的"负载值除以cpu核数"就是cpu的利用率(比如图中所示,2.05除于32核=0.064,转换过来才6.4%的利用率)。另外也可以使用vmstat/w/uptime 来查看同样的内容,因为不常用,所以就不说了。大家可以参考下面实例:

[root@Node2 ~]# vmstat  
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  3    280 73067296   2832 1532468    0    0   165    17    0    0  2  3 94  1  0     
[root@Node2 ~]# w   
 16:25:06 up 28 days, 52 min,  3 users,  load average: 4.81, 4.71, 3.82
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                08Oct21 28days  0.07s  0.07s -bash
root     pts/0    172.16.11.253    15:34    2.00s 17.04s  0.02s w
root     pts/1    172.16.11.253    15:34   50:10  30.58s 30.56s top
[root@Node2 ~]# uptime  
 16:25:23 up 28 days, 53 min,  3 users,  load average: 5.64, 4.89, 3.89
[root@Node2 ~]# 

图中第三行:CPU 的相关信息,主要的含义如下

%us:表示用户空间程序的cpu使用率(没有通过nice调度)

%sy:表示系统空间的cpu使用率,主要是内核程序。

%ni:表示用户空间且通过nice调度过的程序的cpu使用率。

%id:空闲cpu

%wa:cpu运行时在等待io的时间

%hi:cpu处理器中断的数量

%si:cpu处理软中断的数量

%st:被虚拟机偷走的cpu

图中第4、5行的内容:就是 命令 free 的内容了。这里不用多解说,直接向上翻来看即可。

top 的命令,说白了,跟打开windows系统里的任务管理器差不多,里面显示的内容也是一样的。都是正在运行的进程与各项(CPU/Mem/Disk)资源占用。只不过没有 Windows的那么直观与好看而已。当然,如果你认真地看完上面的文章,估计也能看明白了!不明白的,就再看多一次,最好直接上机去运行一下这个命令,然后拿着文章当对比来看。

最近发表
标签列表