在企业生产环境中,系统管理员通常要不定时的检查服务器上各资源的使用状况,如CPU使用率,负载,磁盘的读写速率,网络传输状况等等。因此,掌握一个进程管理工具的熟练使用,无疑对管理员的工作有事半功倍的效果。本文借助CentOS6.6向读者尽可能详细讲解top、htop、glances、以及dstat工具的使用方法和技巧。
A.top工具
top是CentOS系统自带的一款动态显示系统资源使用状况的进程管理工具,类似于windows下的任务管理器,其支持交互式命令以及定制显示内容。在命令行键入top后显示内容如下:
其各字段表达的含义为;
其中load average(平均负载)表示当前cpu上等待运行的进程队列的队列长度,如长度为1表示1个进程,其三个值分别表示过去1分钟、5分钟、15分钟进程队列的平均长度。其值越大表示当前cpu的负载越高
常用选项:
top -d# 指定刷新时间间隔,如:20秒刷新一次 top -d20
top -b以批次方式显示而非实时显示
top -b -n#:指定显示的批次,如:20秒刷新一次,显示3个批次 top -d20 -b -n3
常用交互式命令:
P以cpu百分比排序显示;
M以内存占用量排序显示;
T以cpu时间片累计占用时间排序显示;
l是否显示top一行的信息;
t是否显示进程及cpu两行的相关信息
1是否单独显示每颗cpu的使用率
s修改刷新时间间隔,单位为秒
k杀死指定进程
B.htop工具
htop是top工具的增强版,提供了一个更美观的界面给管理员查看,支持交互命令且支持鼠标选定,由红帽公司收录在Fedora 社区提供的高质量软件源EPEL内,因此使用前需要yum 安装。安装完成后,在命令行键入htop显示如下内容:
常用交互式命令有;
F1获取帮助
u仅显示指定用户的进程
s跟踪选定进程发起的系统调用,以跟踪NetworkManager为例,先选中NetWorkManager进程-->键入s进入跟踪进程的界面,等待片刻之后,便会出现跟踪的结果-->按ESC键结束跟踪
l跟踪选定进程运行时打开的文件,以跟踪NetworkManager为例,先选中NetWorkManager进程-->键入l进入跟踪进程的界面,按F5刷新-->按ESC键结束跟踪
t以进程树的形式显示
a设定cpu的亲缘性(将选定的进程绑定到某颗cpu上)先选中某进程-->键入a,进行CPU的选择
C.glances
glances是一个由Python语言开发的一款更为强大的系统资源监控工具,能够监视 CPU、负载、内存、磁盘 I/O、网络流量、文件系统、系统温度等信息。支持交互式命令,且具有C/S特性。使用前需要yum安装。在命令行键入glances显示如下:
键入h,可查看其交互式命令的使用帮助,再次键入h,返回监控界面
常用选项
-b: 以Byte为单位显示网卡数据速率;
-d: 关闭磁盘I/O模块
-f/path/to/somewhere: 设置输出文件的位置;注:可能需yum安装python-jinja2模块
-o {HTML|CSV}设置文件的输出格式,可以使用html查看,通常与-f一起使用将html文件传输至/var/www/html/下,就可以使用网页查看了
-m: 禁用mount模块
-n: 禁用网络模块
-t #: 指定刷新时间间隔
-1:每个CPU的数据单独显示
以网页查看glances结果为例,首先安装nginx模块(rpm或yum安装均可)-->启动nginx服务-->glances -o HTML -f /usr/share/nginx/html/(此为yum安装nginx后,nginx的默认工作目录)
在外部浏览器打开相应的地址即可
glaces还支持C/S模式。在生产环境中,可以使用glances -s -B 服务器IP,在linux服务器上以服务模式启动,然后就可以在客户机上使用glances -c 服务器IP,监控远程服务器的系统资源使用情况。
例如:服务器的IP为:172.16.24.1。在服务器上执行:glances -s -B 172.16.24.1,在客户机上执行:glances -c 172.16.24.1可查看服务器的资源使用状态。(实际生产环境中,我们通常在服务器上将glances -s -B IP工作于后台作业中:nohubglances -s -B 172.16.24.1 &)
D.dstat
dstat是一款比glances还要强大的系统监控工具,在生产环境中应用的更为广泛。它也需事先安装,安装完成后,在命令行键入dstat
其中:total-cpu-usage表示cpu的使用率统计;-dsk/total表示磁盘读写速率;net/total表示网络传输速率;paging表示内存页换进换出情况;system表示中断以及上下文切换(进程切换)
常用选项:
# #:第一个#表示刷新时间间隔,第二个表示要显示的批次
-c:仅统计cpu的使用状况
-d:仅显示磁盘相关的使用情况
-g:仅显示内存页面换进换出的状况
-n:仅显示网络传输的状况
--io:仅显示IO设备的读写速率状况
--top-cpu:显示最占cpu的进程
--top-io:最占用io设备的进程
--top-mem:最占用内存的进程