每天2个Linux命令 top free


2017-08-05 每天2个Linux命令 top命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

(1)用法:

  用法:  top  [参数]

  top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。
比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。
该命令可以按CPU使用。内存使用和执行时间对任务进行排序,而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

(2)功能:

  功能:  top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
通过top命令所提供的互动式界面,用热键可以管理。

(3)选项参数:

  1)  -b        批处理

  2)  -c        显示完整的治命令       

  3)  -I        忽略失效过程

  4)  -s        保密模式

  5)  -S       累积模式

  6)  -i<时间>     设置间隔时间

  7)  -p<进程号>     指定进程

  8)  -n<次数>       循环显示的次数

(4)实例:

  1)[sunjimeng@localhost ~]$ top

复制代码
[sunjimeng@localhost ~]$ top
top - 18:05:44 up  6:49,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 417 total,   1 running, 416 sleeping,   0 stopped,   0 zombie
%Cpu(s):  4.8 us,  1.9 sy,  0.0 ni, 93.2 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem :  2013872 total,   894192 free,   612372 used,   507308 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1193280 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                 
  3265 sunjime+  20   0 1823060 301072  44248 S  59.8 14.9  29:14.18 gnome-shell                             
  2004 root      20   0  205212  34256   8036 S  13.0  1.7   6:01.59 Xorg                                    
 13378 sunjime+  20   0  796120  22176  14180 S   4.0  1.1   0:01.98 gnome-terminal-                         
 14386 sunjime+  20   0  130288   2096   1268 R   0.7  0.1   0:00.29 top                                     
  3302 sunjime+  20   0  461684   6024   3552 S   0.3  0.3   1:09.70 ibus-daemon                             
 12151 root      20   0       0      0      0 S   0.3  0.0   0:01.40 kworker/0:0                             
 1 root      20   0   60052   7796   2656 S   0.0  0.4   0:06.50 systemd                                 
 2 root      20   0       0      0      0 S   0.0  0.0   0:00.14 kthreadd                                
 3 root      20   0       0      0      0 S   0.0  0.0   0:05.55 ksoftirqd/0                             
 5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                            
 7 root      rt   0       0      0      0 S   0.0  0.0   0:00.74 migration/0                             
 8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                  
 9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/0                                 
10 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/1                                 
11 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/2                                 
12 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/3                                 
13 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/4                                 
14 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/5                                 
15 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/6                                 
16 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/7     
复制代码
  显示结果的解释:

  1.第一行,任务队列信息,同 uptime 命令的执行结果

    【top - 18:05:44】             当前系统的时间

    【up     6:49      】             从6:49分开始运行,如果已经运行3天,则会显示 up  3 days。

    【2  users          】             两个用户

    【load average: 0.00, 0.01, 0.05】   系统负载,即任务队列的平均长度

  2.第二行,Tasks — 任务(进程)

    【Tasks: 417 total】           总进程数

    【1 running】               正在运行的进程数

    【416 sleeping】             睡眠的进程数

    【0 stopped】               停止的进程数

    【0 zombie】              冻结的进程数

  3.第三行,cpu状态信息

    【%Cpu(s): 4.8 us】            用户空间占用CPU百分比

    【1.9 sy】                 内核空间占用CPU的百分比
    【KiB Mem : 2013872 total】      物理内存总量
    【0.0% ni】                用户进程空间内改变过优先级的进程占用CPU百分比

    【93.2 id】                空闲CPU百分比

  4.第四行,内存状态

    【KiB Mem : 2013872 total】      物理内存总量,2G

    【612372 used】             已使用内存总量

    【894192 free】              空闲内存总量

    【507308 buff/cache】          缓存的内存量

  5.第五行,swap交换分区信息

    【KiB Swap: 2097148 total】      交换区总量

    【2097148 free】            空闲的交换区总量

    【0 used】                使用的交换区总量

    【1193280 avail Mem】          缓冲的交换区总量,即可用交换区内存

  6.空行

  7.各个标题的意思:

    PID — 进程id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程  

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)

2)[sunjimeng@localhost ~]$ uptime        同top命令第一行的任务队列信息执行结果

[sunjimeng@localhost ~]$ uptime
 18:25:18 up  7:09,  2 users,  load average: 0.04, 0.06, 0.05 

3)[sunjimeng@localhost ~]$ top -p 2004      显示特定进程号的所有进程信息 

复制代码
[sunjimeng@localhost ~]$ top -p 2004

top - 18:55:18 up  7:39,  2 users,  load average: 0.40, 0.21, 0.12
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s): 11.2 us,  3.4 sy,  0.0 ni, 85.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2013872 total,   874012 free,   632484 used,   507376 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1173212 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                             
  2004 root      20   0  203712  32824   8084 S   6.7  1.6   6:16.16 Xorg  

(5)其他的一些范例:

  [sunjimeng@localhost ~]# top -b #       以批处理模式显示程序信息

  [sunjimeng@localhost ~]# top -S #       以累积模式显示程序信息

  [sunjimeng@localhost ~]# top -n -2 #     设置信息更新次数,表示更新2次后终止更新显示

  [sunjimeng@localhost ~]# top -d -3 #     设置信息更新时间,表示更新周期为3秒

2017-08-05 每天2个Linux命令 free命令

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

(1)用法:

  用法:  free  [选项参数]

(2)功能:

  功能:  free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略。

(3)选项参数:

  1) -b            以Byte为单位显示内存使用情况。 

  2) -k                以KB为单位显示内存使用情况。

  3) -m           以MB为单位显示内存使用情况。 

  4) -g            以GB为单位显示内存使用情况。 

  5) -s            每3秒执行一次free操作

(4)实例:

  1)[sunjimeng@localhost ~]$ free          显示内存使用情况

复制代码
[sunjimeng@localhost ~]$ free                                     //以kn为单位显示
              total        used        free      shared  buff/cache   available
Mem:        2013872      641564      864800       10132      507508     1164056
Swap:       2097148           0     2097148
[sunjimeng@localhost ~]$ free -m                                 //以MB为单位显示
              total        used        free      shared  buff/cache   available
Mem:           1966         626         844           9         495        1136
Swap:          2047           0        2047
[sunjimeng@localhost ~]$ free -g                    //以GB为单位进行显示
              total        used        free      shared  buff/cache   available
Mem:              1           0           0           0           0           1
Swap:             1           0           1
[sunjimeng@localhost ~]$ 
复制代码
  第一部分Mem行解释:
    total:           内存总数;   

   used:          已经使用的内存数;

   free:           空闲的内存数;

   Buffers/cached:        磁盘缓存的大小。



   关系:  total = used + free +Buffers/cached

  第二部分Swap指的是交换分区,也就是我们通常所说的虚拟内存。

2)[sunjimeng@localhost ~]$ free -t           以总的形式显示内存的使用情况

[sunjimeng@localhost ~]$ free -t
              total        used        free      shared  buff/cache   available
Mem:        2013872      640344      865772       10132      507756     1165108
Swap:       2097148           0     2097148
Total:      4111020      640344     2962920

3)[sunjimeng@localhost ~]$ free -s 3         每三秒执行一次free操作

复制代码
[sunjimeng@localhost ~]$ free -s 3
              total        used        free      shared  buff/cache   available
Mem:        2013872      642136      863972       10132      507764     1163300
Swap:       2097148           0     2097148

              total        used        free      shared  buff/cache   available
Mem:        2013872      642148      863960       10132      507764     1163288
Swap:       2097148           0     2097148
......

(5)其他:

  buffers和cached都是缓存,两者的区别:

  为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),
 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。
这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。 

  简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,
对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。

  所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.
这也是linux看内存是否够用的标准。

文章作者: 邓滔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 邓滔 !
评论
  目录