top命令

在linux下可以通过top命令来查系统运行状态和进程运行状态,通过man查看top手册,top的解释是display Linux tasks,以前看到过一个另外的解释display top CPU processes,这个我觉得挺贴切的,因为top这个命令会自动把消耗高的进程排到前面,真的很形象。

1、命令说明

top 参数
  • -h:help表示显示帮助的意思
  • -v:version显示版本的意思,和-h的功能一样
  • -u:user显示指定用户的进程,例如:top -u root
  • -p:pid显示指定进程,例如:top -p 1
  • -n:number进入top后,top会定时刷新状态,这个值就是设置刷新几次
  • -d:delay进入top后,top会定时刷新状态,这个值就是设置几秒刷新一次
  • -b:Batch mode,top刷新状态默认是在原数据上刷新,使用这个参数后,会一屏一屏的显示数据。结合重定向功能和计划任务,这个参数在记录服务器运行状态时非常有用。

以上一些参数是在输入命令时提供的参数,在top运行的过程中,还可以输入一些快捷键来调整显示内容。

一些命令运行时的快捷键说明:

  • q:quit退出程序
  • M:Memory按照内存使用量排序
  • P:CPU按照cpu使用量排序
  • k:kill杀死PID的进程,不输入PID,直接按回车就会退出
  • 1:能显示CPU每个核心的情况
  • h或者?:help 查看更多快捷键
  • f:fields查看进程表头字段含义

2、命令测试

top
top命令测试

top命令测试

第一行说明:

top – :系统当前时间

up:服务器连续运行的时间,笔者见过有服务器连续运行一年以上,linux服务器还是非常稳定的。

user:当前有多少用户登录系统

load average:这个边有3个数值分别表示系统在前1分钟,5分钟,15分钟的工作负载,根据笔者以往的经验来看单核负载在3-5之间比较合适,经常在1以下,说明cpu利用率不高,在5以上,cpu会处于较高负载状态,会容易宕机。有一次项目上线,晚上加班观察服务器状况,这个值长时间保持在72左右,因为服务器有八核,所以每核的值为9,后来服务器就挂了。

第二行就是显示任务的数量情况,其中zombie要注意一下,这个是表示僵尸进程,出现了僵尸进程要注意下僵尸进程是如何产生的。如果不找到产生原因,即使杀死了,可能也会再次出现。

第三行表示cpu的运行情况,按下1可以显示每个核的运行情况。

第四行表示内存memory的使用情况。

第五行表示交换空间swap的使用情况。

下面显示的就是进程的运行状态了。每个表头表示的含义如下:

  • PID:进程编号
  • USER:进程所属用户
  • PR/NI:Priority/Nice value进程执行的优先顺序
  • VIRT:Virtual Image (kb) 虚拟内存使用总额
  • RES:Resident size (kb) 常驻内存
  • SHR:Shared Mem size (kb) 共享内存
  • S:Process Status 进程状态
  • %CPU:cpu使用率
  • %MEM:内存使用率
  • TIME+:进程开始运行时使用cpu的总时间
  • COMMAND:进程运行的命令

在top状态下按f可以查看表头字段说明。

3、常用的命令:

top -b -n 60 -d 60 > /home/cpu.txt

该命令每隔60秒会将服务器运行状态保存到一个文本文件,共运行60次,其实就是将服务器1个小时的运行状态保存起来。使用这个命令,可以记录服务器在繁忙时的负载情况,例如设置到晚上8点到9点之间,这样就可以根据服务器状态作出调整,而不是等服务器挂了才来处理。上面命令各参数,大家可以根据自己需要修改。终于不用加班蹲点观察服务器了。

 

4、top命令补充
top命令是Linux上进行系统监控的首选命令,但有时候却达不到我们的要求,比如当前这台服务器,top监控有很大的局限性。假如服务器运行着websphere集群,有两个节点服务,有两个java进程,top命令的监控最小单位是进程,所以看不到我关心的java线程数和客户连接数,而这两个指标是java的web服务非常重要的指标,通常我用ps和netstate两个命令来补充top的不足。
 
监控java线程数:
ps -eLf | grep java | wc -l
监控网络客户连接数:
netstat -n | grep tcp | grep 侦听端口 | wc -l
上面两个命令,可改动grep的参数,来达到更细致的监控要求。
 
在Linux系统一切都是文件的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标,例如task目录就是用来描述进程中线程的,因此也可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID):
 
ls /proc/PID/task | wc -l
在linux中还有一个命令pmap,来输出进程内存的状况,可以用来分析线程堆栈:
pmap PID
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值