每天一个linux命令(34)--top命令

时间:2023-03-08 15:43:17
每天一个linux命令(34)--top命令

  今天给领导发邮件,我这边虽然显示发出去了,但是他那边一直没收到,结果我以为我发了,他又一直在那边等结果。所以说,以后要另外发个信息或者QQ微信之类的说一声。

  top命令是Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top 是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,知道用户终止该程序为止。比较准确的说,top 命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最 敏感的任务列表,该命令可以按CPU、 内存的使用情况和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

  1.命令格式:

    top [参数 ]

  2.命令功能:

    显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU占用率等

  3.命令参数:

     -b  批处理

    -c  显示完整的命令

    -I   忽略失效过程

    -s  保密模式

    -S  累积模式

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

    -u<用户名>  指定用户名

    -p<进程号>  指定进程

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

  4.使用实例:

  实例1:显示进程信息

  命令: top

  top 命令详解:前五行是当前系统情况整体的统计信息去。下面我们看每一行信息的具体意义。

  第一行,任务队列信息,通 uptime  命令的执行结果,具体参数说明情况如下:

  14:00:00 ---当前系统时间  up    10000   days,   12:00   ---系统已经运行了10000天12小时(在这期间系统没有重启过的哦!)

  2  users   -当前有2个用户登录系统

  load   average:1.15,  1.42,  1.44  --load average 后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

  load   average  数据是每隔5秒检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

  第二行,tasks   --任务(进程),具体信息说明如下:

  系统现在共有187个进程,其中运行中2个,186个休眠中,停止状态的有0个,僵尸状态有0个。

  第三行,cpu 状态信息,具体属性说明如下:

    5.9% --用户空间占用CPU 的百分比

    3.4% sy --内核空间占用的CPU的百分比

    0.0%  ni  --改变过优先级额进程占用CPU 的百分比

    90.4%  id  --空闲CPU百分比

    0.0%  wa --IO等待占用CPU 的百分比

    0.0% hi --硬中断(hardware IRQ)占用CPU的百分比

    0.1%   si --软中断(software interrupts) 占用CPU的百分比

    备注:在这里CPU的使用比率和Windows 概念不同,需要理解Linux 系统用户空间和内核空间的相关知识。

  第四行,内存状态,具体信息如下:

    1234456k total  --总物理内存

    1234456k used  --使用中的内存总量

    1234456K  free  --空闲内存总量

    1234456k  buffers  --缓存的内存量

  第五行,swap 交换分区信息,具体信息说明如下:

    123344k  total --交换区总量

    Ok   used ---使用的交换区总量

    123344k  free --空闲交换区总量

    123344k  cached   --缓冲的交换区总量

  备注:

  第四行中使用的内存总量指的是现在系统内核控制的内存数,空闲内存总量是内核还未纳入其管理范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free 中去,因此在Linux 上free 内存会越来越少,但不用为此担心。

  如果处于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的 buffers  +  第五行的cached,按这个公式此台服务器的可用内存1 +2+3。

  对于内存监控,在 top 里我们要时刻监控第五行 swap 交换分区的 used ,如果这个数值在不断的变化,说明内核在不断进行内存和swap 的数据交换,这是真正的内存不够用了。

  第六行,空行。

  第七行以下:各进程的状态监控,项目列信息说明如下:

  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  --进程名称(命令名/命令行)

  其他使用技巧:

  1.多U多核CPU监控

    在top基本视图中,按键盘数字 1 ,可监控每个逻辑CPU 的状况。

  2.高亮显示当前运行进程

    敲击键盘 b ,

  3.进程字段排序

    默认进入 top 时,各进程是按照CPU的占用量来排序的,按个  x  可以高亮显示用量,不过我试了没啥效果

  4.通过按一次 shift +>

  实例2:显示完整命令

  命令: top  -c

  实例3:以批处理模式显示程序信息

  命令:top  -b

  实例4:以累积模式显示程序信息

  命令:top  -S

  实例5:设置信息更新次数

  命令:top -n 2

  实例6:设置信息更新时间

  命令:top -d 3  表示更新周期为3秒

  实例7:显示指定的进程信息

  命令:top -p  123

  5.top 交互命令

    在 top 命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了 s 选项,其中一些命令可能会被屏蔽。

    h  显示帮助画面,给出一些简短的命令总结说明

    k  终止一个进程

    i  忽略闲置和僵死进程,这是一个开关式命令。

    q  退出程序

    r  重新安排一个进程的优先级别

    S  切换到累计模式

    s  改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms, 输入 0  值则系统将不断刷新,默认值是 5s.

    f或者F  从当前显示中添加或者删除项目

    0或者0  改变显示项目的顺序

    l  切换显示平均负载和启动时间信息

    m  切换显示内存信息

    t  切换显示进程和CPU状态信息

    c  切换显示命令名称和完整命令行

    M  根据驻留内存大小进行排序

    P  根据CPU使用百分比大小进行排序

    T  根据时间/累计时间进行排序

    W  将当前设置写入~/. toprc 文件中