Linux 指令详解 top 系统资源检测

指令:top 持续的监测整个系统的程序工作状态<1>.top是一个优秀的交互式工具,能够实时显示当前系统的进程的相关信息,包括PID、内存占用率、CPU占用率等,还可以根据需要按CPU占用情况排序、内存使用情况排序。<2>.如果在前台执行该命令,它将一直显示前台,直到用户终止该程序命令格式:# top [-] [d] [p] [q] [c] [C] [S] [s] [n]参数说明:-b: 批处理模式。通常用在脚本中,不断输出信息-c: 显示包含路径的命令行,而不只是程序名称-d: 指定信息刷新的时间间隔(默认是5s)-i: 不显示闲置或者僵死进程-n: 指定显示的次数。一般与-b搭配使用-p: 指定进程号。可以指定多个pid-s: 使top命令在安全模式中运行-S: 指定累积模式,每个进程的CPU时间为该进程及关闭的子进程锁累加的时间-u: 指定用户名top交互命令:c: 显示完整的命令d: 更改刷新频率f: 增加或减少要显示的列(选中的会变成大写并加*号)F: 选择排序的列h: 显示帮助画面H: 显示线程i: 忽略闲置和僵死进程k: 通过给予一个PID和一个signal来终止一个进程。(默认signal为15。在安全模式中此命令被屏蔽)l: 显示平均负载以及启动时间(即显示影藏第一行)m: 显示内存信息M: 根据内存资源使用大小进行排序N: 按PID由高到低排列o: 改变列显示的顺序O: 选择排序的列,与F完全相同P: 根据CPU资源使用大小进行排序q: 退出top命令r: 修改进程的nice值(优先级)。优先级默认为10,正值使优先级降低,反之则提高的优先级s: 设置刷新频率(默认单位为秒,如有小数则换算成ms)。默认值是5s,输入0值则系统将不断刷新S: 累计模式(把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+ )T: 根据进程使用CPU的累积时间排序t: 显示进程和CPU状态信息(即显示影藏CPU行)u: 指定用户进程W: 将当前设置写入~/.toprc文件,下次启动自动调用toprc文件的设置<: 向前翻页>: 向后翻页?: 显示帮助画面1(数字1): 显示每个CPU的详细情况<Space>:立即刷新top输出解析# toptop – 02:53:08 up 24 days, 18:47, 1 user, load average: 0.02, 0.01, 0.00Tasks: 84 total, 1 running, 83 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 3922748k total, 813552k used, 3109196k free, 158292k buffersSwap: 8191992k total,0k used, 8191992k free, 505676k cachedPID USERPR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND1086 root20 0 15004 1292 1004 R 0.3 0.1 0:00.11 top1 root20 0 19232 1476 1188 S 0.0 0.0 0:00.67 init第一行:top – 02:53:08 up 24 days, 18:47, 1 user, load average: 0.02, 0.01, 0.00top: 表示为top的指令02:53:08: 系统当前时间up 24 days, 18:47: 系统开机到现在经过了多少时间1 user: 当前连接用户数load average: 0.02, 0.01, 0.00:系统1分钟、5分钟、15分钟的平均CPU负载信息系统平均CPU负载:<1>.load average数据每隔5秒检查一次活跃的进程数,然后按特定算法计算出的数值。<2>.在多处理器系统中,CPU负载均值是基于内核的数量决定的。以 100% 负载计算,1.00 表示单个处理器,而 2.00 则说明有两个双处理器,同理 4.00 就说明主机具有四个处理器。反推对于双核处理器,值为2.00则表示100%负载。<3>.一般,对于单个处理器这个值应该低于1,除非系统很忙碌。如果这个值高于5则表明系统超负荷运转。<4>.有经验的系统管理员都会将这条线划在 0.70:第二行:任务总览Tasks: 84 total, 1 running, 83 sleeping, 0 stopped, 0 zombieTasks: 任务84 total: 当前进程总数1 running: 正在运行的进程数83 sleeping: 睡眠进程数量0 stopped: 停止的进程数0 zombie: 僵死进程数第三行:cpu状态 表示这一行显示CPU总体信息Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu(s): 显示CPU的信息us: 用户空间占用CPU百分比sy: 内核空间占用CPU的百分比ni: 用户进程空间中改变过优先级的进程占用CPU百分比id: 空闲CPU百分比(反映一个系统cpu的闲忙程度)wa: 等待输入输出(I/O)的CPU时间百分比hi: CPU处理硬件中断占用的时间si: CPU处理软件中断占用的时间st: 显示虚拟机被hypervisor偷去的CPU时间(有虚拟cpu的情况)注:当有多个CPU时,可能会超过两行,这个时候就需要使用数字键1来更改,如下Cpu0 : 0.7%us, 0.0%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st第四行:物理内存使用Mem: 3922748k total, 813552k used, 3109196k free, 158292k buffersMen: 显示内存的信息total: 表示物理内存总量(total = used + free)used: 表示已经使用的物理内存总量free: 表示空闲的物理内存(buffers和cached所占用的也被当作已使用)buffers: 表示用作内核缓存的物理内存第五行:虚拟内存使用(交换空间)Swap: 8191992k total, 0k used, 8191992k free, 505676k cachedSwap: 交换空间total: 表示交换空间总量used: 表示使用的交换空间总量free: 表示空闲的交换空间总量cached: 表示缓冲交换空间总量buffers和cached都是linux操作系统底层的机制,目的是为了加速对磁盘的访问。其中buffers指的是块设备的读写缓冲区,cached指的是文件系统本身的页面缓存。近似的计算内存总量公式:第四行的free + 第四行的buffers + 第五行的cached第六行:空行在top程序中输入指令的地方第七行:每个进程使用的资源情况 PID USERPR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND1086 root20 0 15004 1292 1004 R 0.3 0.1 0:00.11 top1 root20 0 19232 1476 1188 S 0.0 0.0 0:00.67 initPID: 进程的ID(进程的唯一标识符)USER: 该进程所属用户PR: 进程调度的优先级(值越小越优先被执行,RT表示正在运行中)NI: 进程的nice值。(范围-20到19,值越小越优先被执行)VIRT: 进程使用的虚拟内存总量(单位kb,VIRT=SWAP+RES)RES: 进程占用的物理内存。(单位kb。RES=CODE+DATA。%MEM 所显示的是由此列的值)SHR: 进程使用的共享内存。(单位kb) S: 进程的状态。主要有以下几种:D.不可中断的休眠S.休眠R.正在运行T.被跟踪或已停止Z.僵死状态(僵尸进程)%CPU: 进程占用的CPU百分比%MEM: 进程占用的物理内存的百分比(以RES列的值为标准)TIME+:进程启动后占用的总的CPU时间。(单位1/100秒) COMMAND: 进程启动命令名称还有其他默认中不显示的输出,所有的显示如下a PID进程idb PPID 父进程idc RUSER Real user named UID进程所有者的用户ide USER 进程所有者的用户名f GROUP 进程所有者的组名g TTY启动进程的终端名。h PR优先级i NInice值。负值表示高优先级,正值表示低优先级j P最后使用的CPU,仅在多CPU环境下有意义k %CPU 上次更新到现在的CPU时间占用百分比l TIME 进程使用的CPU时间总计,单位秒m TIME+ 进程使用的CPU时间总计,单位1/100秒n %MEM 进程使用的物理内存百分比o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESp SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。 SWAP = VIRT – RESq RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA(应用程序真的使用的内存)r CODE 可执行代码占用的物理内存大小,单位kbs DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,,单位kbt SHR共享内存大小,单位kbu nFLT 进程启动以来页面错误的次数(这个值过高意味着进程从磁盘读取大量资源)v nDRT 最后一次写入到现在被修改过的页面数。(通常小于10或者为0)w S进程状态D.不可中断的休眠S.休眠R.正在运行T.被跟踪或已停止Z.僵死状态(僵尸进程)x COMMAND 命令名/命令行y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名z Flags 任务标志,参考 sched.h注:<1>.在默认中,是按“%CPU”排序的<2>.shift + >或shift + <可以向右或左改变排序列<3>.何时刷新时间需要快于1s:时间段内需要更多的样本——————————-参数实例1、默认输出:# top2、指定输出次数(-n)更新5次后退出# top -n 53、批处理模式(-b)使用批处理模式可以在文件中保存输出# top -b4、2与3结合:将top的信息处理5次,然后将结果输出到dodo.txt文件# top -b -n 5 > /doiido/dodo.txt5、指定进程(-p)PID为0表示为top命令自身的PID5.1:监控PID为3345的进程# top -p 33455.2:监控PID为3345和PID为7634的进程# top -p 3345 -p 76346、指定刷新时间(-d)(以秒计)设置信息刷新时间为5s(一般设置为1到3秒的间隔)# top -d 57、显示完整命令(-c)# top -c8、以累积模式显示信息(-S)# top -S9、指定用户名(-u,-U)可以指定显示的用户或者UID9.1、只显示用户为doiido的进程# top -U doiido9.2、只显示UID为600的进程# top -u 600注:-p、-u和-U选项同时只可以使用一个10、只显示空闲进程(-i)# top -i——————————-交互命令实例1、帮助: h或者?2、立即刷新: <ENTER> 或者 <SPACE>3、设置更新刷新间隔: ‘d’ 或 ‘s’按下’d’或’s’时会提示输入一个值(以秒为单位),然后将会以这个值作为刷新间隔4、字段管理: f按下f后可以选择想要显示的字段。(*标记表示已选择的)5、反向排序: R按下R切换反向和常规排序6、显示命令: c按下c切换完整路径和程序名 7、空闲任务: i切换显示空闲任务8、指定用户: u按下u会提示输入用户名,然后就会显示特定用户的进程(空白将会显示全部用户)9、粗体显示: B按下B切换重要信息粗体显示10、设置最大显示任务数: ‘n’ 或 ‘#’按下n或者#后会提示输入数字,该数字即为最大显示的任务数量11、终止的进程: k按下k之后会提示输入一个PID,然后输入PID之后会提示输入给该进程什么信号注:一般终止进程使用15信号,如不能正常结束则使用信号912、切换高亮信息: ‘x’ 或者 ‘y’x:将排序字段高亮显示(纵列)y:将运行进程高亮显示(横行)13、重新设置优先级: r重新设置一个任务的优先级(用法和k一样)14、切换负载、任务、内存信息的显示: ‘l’ ‘t’ ‘m’默认如下:top – 09:32:20 up 26 min, 1 user, load average: 0.00, 0.00, 0.00Tasks: 72 total, 1 running, 71 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.5%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1914492k total, 148084k used, 1766408k free,7460k buffersSwap: 2047992k total,0k used, 2047992k free, 37928k cachedl:切换显示第二行Tasks: 72 total, 1 running, 71 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1914492k total, 148084k used, 1766408k free,7452k buffersSwap: 2047992k total,0k used, 2047992k free, 37928k cachedt:切换显示第三行top – 09:32:46 up 26 min, 1 user, load average: 0.00, 0.00, 0.00Mem: 1914492k total, 148084k used, 1766408k free,7460k buffersSwap: 2047992k total,0k used, 2047992k free, 37928k cachedm:切换显示Mem和Swaptop – 09:33:32 up 27 min, 1 user, load average: 0.00, 0.00, 0.00Tasks: 72 total, 1 running, 71 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.5%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st15、切换全屏和交替模式间: A交替模式按下A会显示4个窗口,分别为如下四个字段:Def:默认字段组(默认只显示这个组)Job:任务字段组Mem:内存字段组Usr:用户字段组在这个模式下,按a或w可以切换,切换之后按-可以隐藏:Def – 09:23:09 up 17 min, 1 user, load average: 0.00, 0.00, 0.00Tasks: 72 total, 1 running, 71 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1914492k total, 147960k used, 1766532k free,7380k buffersSwap: 2047992k total,0k used, 2047992k free, 37928k cached1 PID USERPR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND1 root20 0 19232 1516 1228 S 0.0 0.1 0:01.08 init2 root20 00 0 0 S 0.0 0.0 0:00.00 kthreadd2 PID PPID TIME+ %CPU %MEM PR NI S VIRT SWAP RES UID COMMAND1086 1073 0:01.70 0.0 0.1 20 0 R 15004 0 1296 0 top1073 1069 0:00.03 0.0 0.1 20 0 S 105m 0 1844 0 bash3 PID %MEM VIRT SWAP RES CODE DATA SHR nFLT nDRT S PR NI %CPU COMMAND1069 0.2 98.0m 0 4028 520 800 3048 5 0 S 20 0 0.0 sshd1034 0.2 81520 0 3424 288 704 2544 2 0 S 20 0 0.0 qmgr4 PID PPID UID USERRUSER TTYTIME+ %CPU %MEM S COMMAND1069 949 0 rootroot?0:00.94 0.0 0.2 S sshd10251 0 rootroot?0:00.01 0.0 0.2 S master ————————特定应用——————1:通过shell脚本监控在shell脚本中添加如下行top -b -n 2 | grep -E "java| apache2" >> /doiido/logs2:监视特定进程将需要监视的进程命令行特征保存到KEYS中即可#!/bin/shKEYS='agent|omc4j|terminal|module'pslist(){ps -ef | egrep $KEYS | grep -v grep}readpid(){while read user pid dummy;doecho -n " -p $pid"done}top `pslist | readpid`3、与at或cron结合,在特定时间对资源使用状态进行快照# vi test.atTERM=linux top -b -n 1 > /doiido/dodo.txt# at -f ./test.at now+1minutesTERM:Top运行时需要此变量,但“at”在定时调用时并不会保留4、查看运行时间# time top -b -n 1real 0m0.665suser 0m0.010ssys0m0.108s

real:Top工作需要的总时间

重新开始吧!下次我会吸取教训,不让自己犯同样的错误的;

Linux 指令详解 top 系统资源检测

相关文章:

你感兴趣的文章:

标签云: