top命令
top作为日常管理工作中最常用也是最重要的Linux 系统监控工具之一,可以动态观察系统进程状况。
top常用方式
指定pid,只关注指定的线程
top -p
开启线程,排查耗费资源的线程
top -H
指定刷新间隔与刷新次数
top -d 5 -n 2
上面代码是指定每5秒刷新一次数据,一共执行2次
top输出信息
第一行给出当前服务器时间,启动时间,当前登录用户,以及系统负载情况。需要注意的是linux的系统负载是以1分钟、3分钟和15分钟内的平均值来衡量的。
第二行列出系统进程情况,总共289个进程,4个进程处于运行状态,255个空闲,0个停止,另外有0个僵尸进程。僵尸进程指的是子进程退出后父进程并没有处理子进程的退出信号,导致子进程变为僵尸进程。
第三行给出当前CPU的工作情况,%us(user)指的是cpu用在用户态程序上的时间;%sy(sys)指的是cpu用在内核态程序上的时间;%ni(nice)指的是用在nice优先级调整过的用户态程序上的时间;%id(idle)指的是cpu空闲时间;%wa(iowait)指的是 cpu等待系统io的时间;%hi指的是cpu处理硬件中断的时间;%si指的是cpu处理软中断的时间;%st(steal)用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间。通常idle值可以反映一个系统cpu的闲忙程度。在多核的情况下,cpu的使用率是可能超过100%。
第四行和第五行给出真实内存的使用情况,包括内存总量,使用量,空闲量,以及交换分区的总量,使用量和空闲量。此外关于buffers和 cached的区别需要说明一下,buffers指的是块设备的读写缓冲区,cached指的是文件系统本身的页面缓存。它们都是linux操作系统底层的机制,目的就是为了加速对磁盘的访问。
第六行往后是进程列表,常见的这几列的意义分别为:PID(进程号), USER(运行用户),PR(优先级),NI(任务nice值),VIRT(虚拟内存用量),RES(物理内存用量),SHR(共享内存用量),S(进程状态),%CPU(CPU占用比),%MEM(内存占用比),TIME+(累计CPU占用时间)。
除了这些信息之外,top还提供了很多命令能帮我更好的解读这些信息,例如按”M”键可以按内存用量进行排序;按”P”可以按CPU使用量进行排序,这样一来对于分析系统瓶颈很有帮助;此外,按“f”可以进入交互页面,选择指定的列显示,例如可以按“b”选择显示PPID,再按一次“b”即可取消显示。”r”可以改变一个进程的nice值;”k”可以向一个进程发信号;”z”可以使用彩色显示。