常用的linux排查命令之TOP
查看整机情况之top命令
-
第一行
当前时间 09:28:11 系统已运行时间 up 2 days,19:22 当前登录用户数 5 users 系统负载 load average: 1.48 1.38 1.30 分别代表一分钟、五分钟、十五分钟有1.48、1.38、1.30个正在运行及准备就绪的线程,如果是单cpu4核心,那么load average为4代表刚好满负载即有四个线程分别占满四个核,通常情况我们设置为cpu数量 * 该cpu核心数 * 0.7为阈值。
-
第二行为进程信息统计数据
437 total 进程总数为437 1 running 正在运行的进程数为1 436 sleeping 睡眠的进程数为436 0 stopped 停止的进程数为0 0 zombie 僵尸进程数为0,当子进程退出时,父进程没有调用wait函数或者waitpid()函数等待子进程结束,又没有显式忽略SIGCHLD信号,那么它将一直保持在僵尸状态,如果这时父进程结束了,init进程会自动接收这个子进程,为它收尸,但如果父进程是一个循环,不会结束,那么子进程就会一直保持僵死状态。
-
第三行是CPU信息统计数据
0.0% us: 用户空间占用全部CPU百分比,比如4核则百分之25%使用了4分之一 0.3% sy: 内核(系统)空间占用CPU百分比 0.0% ni: 用户进程空间内改变过优先级的进程占用CPU百分比 99.7% id: 空闲CPU百分比 0.0% wa: 等待输入输出的CPU时间百分比 0.0%hi: 硬件CPU中断占用百分比 0.0%si: 软中断占用百分比 0.0%st: 虚拟机(虚拟化技术)占用百分比
-
第四、五行为内存信息数据
Mem: 1004768k total: 物理内存总量 463092k used: 使用的物理内存总量 541676k free: 空闲内存总量 64316k buffers: 用作内核缓存的内存量 Swap: 694268k total: 交换区总量 0 k used: 使用的交换区总量 694268k free: 空闲交换区总量 224884k cached:缓冲的交换区总量(内存中的数据被移动至交换区而后又被送至内存空间,但是使用过的交换区尚未被覆盖,其空间大小即为这些数据已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再次对交换区写入)
-
进程的详细信息
序号 列名 含义 a PID 进程id b PPID 父进程id c RUSER Real user name d UID 进程所有者的用户id e USER 进程所有者的用户名 f GROUP 进程所有者的组名 g TTY 启动进程的终端名 h PR 优先级 i NI nice值。负值表示高优先级,正值表示低优先级 j P 最后使用的CPU,仅在多CPU环境下有意义 k %CPU 上次更新到现在的CPU时间占用百分比,百分之100说明占满单核 l TIME 进程使用的CPU时间总计,单位秒 m TIME+ 进程使用的CPU时间总计,226:14.65 226分支14秒65毫秒 n %MEM 进程使用的物理内存百分比 o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。 q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA r CODE 可执行代码占用的物理内存大小,单位kb s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb t SHR 共享内存大小,单位kb u nFLT 页面错误次数 v nDRT 最后一次写入到现在,被修改过的页面数。 w S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) x COMMAND 命令名/命令行 y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名 z Flags 任务标志,参考 sched.h
-
使用
top -d 1 -p 7001 每隔一秒打印出7001进程的使用情况 敲击"1" 列出每个核的cpu情况 敲击"b" 根据mem%来排序