相见恨晚,你一定没用过的Linux性能监控神器htop

一、htop的优势与安装

htop是Linux系统中的一个互动的进程查看器,与Linux传统的top相比,htop更加人性化,它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。

htop相比较top的优势:

可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行。
在启动上比top更快。
杀进程时不需要输入进程号。
htop支持鼠标选中操作。
top已不再维护。

Htop项目地址是
https://github.com/hishamhm/htop, 要使用htop,既可以通过源码包编译安装,也可以配置好yum源后网络下载安装,推荐yum方式安装,但是要下载一个epel源,因为htop包含在epel源中。安装很简单,这里以centos7.x版本为例,命令如下:

[root@localhost ~]# yum install epel-release
[root@localhost ~]#  yum install -y htop

安装完成后,命令行中直接敲击htop命令,即可进入htop的界面。

二、htop的使用

htop命令安装好以后,直接输入htop,即可打开如下界面:

从图中可以看出,htop命令总共分了5个展示区,分别是cpu展示区、内存展示区、整体状态区、进程状态区和管理控制台。

htop命令支持键盘输入和鼠标点击,首先看一下CPU展示区,htop可以通过进度条展示每个CPU逻辑核的使用百分比,并且通过不同颜色进行区分,其中,蓝色的表示low-prority使用,绿色的表示normal使用情况,红色的表示kernel使用情况,青色的表示vistualiz使用情况。从图中输出可在,此服务器有32个逻辑核。

接着是内存展示区,主要是物理内存和swap的状态,同样也使用了不同颜色来区分是使用情况,其中Mem项中,绿色的表示已经使用内存情况,蓝色的表示用于缓冲的内存使用情况,黄色的表示用于缓存的内存使用情况。从图中可知,此服务器有72Gb内存。而Swap项中,主要显示交换分区使用情况,如果使用过大,那么可能需要增加内存了。

然后看整体状态区,其中,Tasks项显示的是进程总数,当前运行的进程数、Load average项展示的是系统1分钟,5分钟,10分钟的平均负载情况、Uptime为系统运行了多长时间。

最后看下进行状态区和管理控制台,进程状态区展示当前系统中的所有进程,默认有12列组成,每列代表的含义如下:

PID:进程标志号,是非零正整数
USER:进程所有者的用户名
PR:进程的优先级别
NI:进程的优先级别数值
VIRT:进程占用的虚拟内存值
RES:进程占用的物理内存值
SHR:进程使用的共享内存值
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
%CPU:该进程占用的CPU使用率
%MEM:该进程占用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间
COMMAND:进程启动的启动命令名称

管理控制台控制着进程的展示方式,可以看到,在进程控制台有F1~F10共10个功能键。每个按键含义如下:

快捷键

按键

功能说明

h, ?

F1

查看htop使用说明

S

F2

htop 设定

/

F3

搜索进程

\

F4

进程过滤器

t

F5

显示树形结构

<,>

F6

折叠或展开(新版本),或选择排序方式(老版本)

[

F7

可减少nice值,这样就可以提高对应进程的优先级

]

F8

可增加nice值,这样就可以降低对应进程的优先级

k

F9

可对进程传递信号

q

F10

结束htop,退出

要对htop的输出和展示进行设置,可鼠标点击管理控制台下的Setup或者按下F2键, 之后即可进入htop 设定的页面,Meters页面设定了顶端的一些信息显示,顶端的显示又分为左右两侧,到底能显示些什么可以在最右侧那栏新增,要新增到上方左侧(按键F5即可)或是右侧(按键F6即可)都可以,这就是个人设定的范围了。这里多加了一个时钟。如下图所示:

从图中可以看出,上方左右两栏的显示方式分为Text、 Bar、Graph、Led四种,可根据需要选择展示的方式。

接着是Display options 的设定,可以根据运维自己的需要来设定。如下图所示:

这个设置主页是定义进程展示的方式,常用的有树形结构显示进程、不隐藏用户线程、以不同颜色显示线程等几个选项。设置完成后,进程区域显示如下:

从上图可以看出,进程和线程一目了然,并且以树形结构展示出来了,同时,对线程的PID、占用CPU百分比、内存百分比、运行时间等属性也都一一展示出来了,这非常有助于对应用系统运行状态的掌握和判断。

为了能更清晰确认进程和线程的关系,按键F2,打开Columns的设定,如下图所示:

这里新增一列,列名是TGID,也就是线程的group id,然后按键F10保存返回到进程展示区界面,如下图所示:

如上图,可以发现,进程展示区多了TGID一列信息,这就是线程对应的group id,从这个id可以看出,进程和线程之间的关系和区别。

接着,鼠标点击Search或者按下F3, 即可进行搜索操作,输入进程名进行搜索,例如搜索zabbix进程,如下图所示:

如上图所示,已经搜索到了zabbix对应的进程信息,这就是搜索功能,跟搜索类似的还有一个过滤器功能,按键F4,即可进入过滤器,其实相当于关键字索引,不区分大小写,如果筛选条件一直保存,可以通过Esc键清除,如下图所示:

要显示树形结构,还有更简单的方式,那就是输入"t"或按下F5,即可显示树形结构,效果和pstree命令差不多,父、子进程可以列出来。如下图所示:

htop还可以对某进行进行折叠或展开(新版本htop2.x),或者指定排序方式(老版本htop1.x),按键F6就可以指定目标条件展示或折叠。

htop可以操作进程,例如对进程的优先级进行设置,通过按键F7可调高优先级nice-,按键F8可调低优先级nice+,而通过按键F9可以kill选中的进程。如下图所示:

最后,htop还可以显示指定用户的所有进程,在htop界面,键盘输入"u",即可在左侧选择用户,那么就会展示此用户的所有进程信息。例如要查询zabbix用户的所有进程信息,如下图所示:

要退出htop界面,可直接按键F10即可退出。

更多详细功能,可自行研究。如喜欢,请关注我,定期发布高质量技术文章。

原文链接:,转发请注明来源!