spacer.gif      在 Linux 系统中,top命令可以用来显示系统中正在运行的进程的实时状态,它显示了一些非常有用的信息,比如CPU、内存消耗、及进程情况等。但还有一个比 top 命令功能更为实用,或者说是top的增强版——htop,它比top有着更加强大的功能并能显示更多的信息。

spacer.gif      htop是Linux系统下一个基本文本模式的、交互式的进程查看器,与系统默认自带的top 程序相比,htop有如下优点:

1)可以将CPU、内存、交换分区等使用状态可以很形象的用进度条表示出来,使得我们可以更加直观的查看到服务器关键性能统计数据;
2)支持垂直和水平方向上滚动浏览进程列表,以查看所有的进程和完整的命令行,而且支持进程树方式进行显示;
3)可以根据关键字搜索相关的进程,而且不需要输入相关进程号,直接杀掉相关进程;
4)可以通过鼠标进行相关操作,拥有比top程序更多的选项和功能。

spacer.gif      htop命令系统默认是不安装的,而且红帽的官方软件安装库中也是不带的,如果需要使用htop命令,需要我们自行进行安装,这里我以CentOS 7为例进行演示:

      首先下载epel(RHEL 7)的epel源到/etc/yum.repos.d/目录中,我这里用的是阿里云的yum源。

[root@xlogin ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@xlogin ~]# yun -y install htop

spacer.gif      你也可以通过以下途径获取htop:

http://sourceforge.net/projects/htop/
http://hisham.hm/htop

spacer.gif      安装完成后,直接运行htop命令:

wKioL1Z_qNmS51llAADvXCIanic437.png

      在窗口的左上角部分,显示的是 CPU 负载、内存消耗及交换空间的实时信息,右边显示任务(Tasks)平均负载(Load average)系统当前时间(Time)、系统运行时间(uptime),下面就是进程实运行状况,最后一行是F1——F10的功能菜单和对应的字母快捷键。

      平均负载部分提供了三个数字,表示的是在过去的5分钟、10分钟和15分钟系统的平均负载,假如服务器是单核CPU,平均负载如果为1,则意味着CPU的利用率是百分之百的。

wKiom1Z_wAywV7euAAAMcHcHQs8328.png

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

     htop常用功能键:

wKiom1Z_wqqRAlIdAADUsfYt7S0068.jpg

            F1 : 查看htop使用说明
            F2 : 设置
            F3 : 搜索进程
            F4 : 过滤器,按关键字搜索
            F5 : 显示树形结构,功能类似于pstree命令
            F6 : 选择排序方式
            F7 : 减少nice值,这样就可以提高对应进程的优先级
            F8 : 增加nice值,这样可以降低对应进程的优先级
            F9 : 杀掉选中的进程
            F10 : 退出htop
            
             / : 搜索字符
            h : 显示帮助
            l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
            u :显示所有用户,并可以选择某一特定用户的进程
            s : 将调用strace追踪进程的系统调用
            t : 显示树形结构

            H :显示/隐藏用户线程
            I :倒转排序顺序
            K :显示/隐藏内核线程    
            M :按内存占用排序
            P :按CPU排序    
            T :按运行时间排序

      这里以关键字搜索功能为例:按下F4键后,出现关键字输入,我们尝试搜索关键字为dh的进程,匹配到的进行就显示出来了。

wKioL1Z_sknQ9ejQAABfosjxBRk587.jpg

      除了上面介绍的一些热键,htop 还提供了很有用的命令行选项。

      下面列举几个htop常用选项:

    -s COLUME选项: 按指定的列排序。例如,htop -s PID 命令会按 PID 列的大小排序来显示。
    -u UserName选项: 显示指定的用户的进程信息列表。
    -d 选项: 设置刷新的延迟时间。例如,htop -d 100 命令会使输出在1秒后才会刷新(参数 -d 的单位是10微秒)。

      例如,htop -u postixf命令会只显示出用户名为postixf的相关进程。

wKiom1Z_uGmSplf_AABYlfeTT-8175.jpg

    另外htop还有几个子命令:

	l:显示选定的进程打开的文件列表;
	s:跟踪选定的进程的系统调用;
	t:以层级关系显示各进程状态;
	a:将选定的进程绑定至某指定的CPU核心;

      这里以我们以rsyslogd进程为例,使用上下方向键选择rsyslogd进程后,按下l会显示出rsyslogd进程打开的所有文件列表。

wKioL1Z_tGmwViJnAAGJpSPWXR8971.jpg

wKioL1Z_tNrjBBc6AAFd7i07GbU255.jpg

      在系统中运行着的实时进程视图中,要追踪某个进程是个挺麻烦的问题。因为整个列表在不停的刷新着,进程的排列顺序也在变动着。对于此,htop 提供了一个很简单的解决方案:颜色标注。你可以标注一个进程条目,它会以不同与其他进程的颜色显示,因此要追踪它就变得容易了。要标注某个进程条目,需要做的就是选中此条目,然后按下“空格”键。例如,在下面的截图示例中,我已经颜色标注了三个进程:

wKiom1Z_tkzwFWogAAGDLDtG24A420.jpg

   最后,我们再以F2功设置为例:

通过F2功能设置功能,我们可以使用F5或F6分别添加到上方的左侧或右侧,F9可移除等等。每个条目都支持四种显示方式:Text、Bar、Graph、LED,个人感觉LED显示效果还是比较更为好看点,但是Graph却也更为直观些,哈哈。

这里都是支持鼠标操作的,看看下边这个图,简单地设置下,就足以令top命令该羞愧而死了吧!

wKioL1Z_wWKTEarSAAEPOL9cmmY053.jpg

       另外按F2后出现的Display options也是个好东西哦!

wKioL1Z_wbGQWyN-AABsIu_ZOuY935.jpg

      比如我这边一台阿里云的服务器,在使用htop查看进程信息的时候,经常会出现很多个进程重复的情况,大家直接看下在选择Hide userland threads前后的区别吧!

      这是我们以AliY为关键字搜索,没有选择Hide userland threads前的情况;

wKiom1Z_vurwGSyUAAGHnIZAfU8036.jpg

    同样以AliY为关键字搜索,这是选择Hide userland threads后的截图;

wKiom1Z_v0qhlBrhAACDiRYeWH4218.jpg

     更多功能,自己摸索哦!htop这么好的工具,redhat系列却一直不愿把top替换了...求解!