在 Linux 系统中,top命令可以用来显示系统中正在运行的进程的实时状态,它显示了一些非常有用的信息,比如CPU、内存消耗、及进程情况等。但还有一个比 top 命令功能更为实用,或者说是top的增强版――htop,它比top有着更加强大的功能并能显示更多的信息。
htop是Linux系统下一个基本文本模式的、交互式的进程查看器,与系统默认自带的top 程序相比,htop有如下优点:
1)可以将CPU、内存、交换分区等使用状态可以很形象的用进度条表示出来,使得我们可以更加直观的查看到服务器关键性能统计数据; 2)支持垂直和水平方向上滚动浏览进程列表,以查看所有的进程和完整的命令行,而且支持进程树方式进行显示; 3)可以根据关键字搜索相关的进程,而且不需要输入相关进程号,直接杀掉相关进程; 4)可以通过鼠标进行相关操作,拥有比top程序更多的选项和功能。
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
你也可以通过以下途径获取htop:
http://sourceforge.net/projects/htop/ http://hisham.hm/htop
安装完成后,直接运行htop命令:
在窗口的左上角部分,显示的是 CPU 负载、内存消耗及交换空间的实时信息,右边显示任务(Tasks)、平均负载(Load average)、系统当前时间(Time)、系统运行时间(uptime),下面就是进程实运行状况,最后一行是F1――F10的功能菜单和对应的字母快捷键。
平均负载部分提供了三个数字,表示的是在过去的5分钟、10分钟和15分钟系统的平均负载,假如服务器是单核CPU,平均负载如果为1,则意味着CPU的利用率是百分之百的。
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常用功能键:
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的进程,匹配到的进行就显示出来了。
除了上面介绍的一些热键,htop 还提供了很有用的命令行选项。
下面列举几个htop常用选项:
-s COLUME选项: 按指定的列排序。例如,htop -s PID 命令会按 PID 列的大小排序来显示。 -u UserName选项: 显示指定的用户的进程信息列表。 -d 选项: 设置刷新的延迟时间。例如,htop -d 100 命令会使输出在1秒后才会刷新(参数 -d 的单位是10微秒)。
例如,htop -u postixf命令会只显示出用户名为postixf的相关进程。
另外htop还有几个子命令:
l:显示选定的进程打开的文件列表; s:跟踪选定的进程的系统调用; t:以层级关系显示各进程状态; a:将选定的进程绑定至某指定的CPU核心;
这里以我们以rsyslogd进程为例,使用上下方向键选择rsyslogd进程后,按下l会显示出rsyslogd进程打开的所有文件列表。
在系统中运行着的实时进程视图中,要追踪某个进程是个挺麻烦的问题。因为整个列表在不停的刷新着,进程的排列顺序也在变动着。对于此,htop 提供了一个很简单的解决方案:颜色标注。你可以标注一个进程条目,它会以不同与其他进程的颜色显示,因此要追踪它就变得容易了。要标注某个进程条目,需要做的就是选中此条目,然后按下“空格”键。例如,在下面的截图示例中,我已经颜色标注了三个进程:
最后,我们再以F2功设置为例:
通过F2功能设置功能,我们可以使用F5或F6分别添加到上方的左侧或右侧,F9可移除等等。每个条目都支持四种显示方式:Text、Bar、Graph、LED,个人感觉LED显示效果还是比较更为好看点,但是Graph却也更为直观些,哈哈。
这里都是支持鼠标操作的,看看下边这个图,简单地设置下,就足以令top命令该羞愧而死了吧!
另外按F2后出现的Display options也是个好东西哦!
比如我这边一台阿里云的服务器,在使用htop查看进程信息的时候,经常会出现很多个进程重复的情况,大家直接看下在选择Hide userland threads前后的区别吧!
这是我们以AliY为关键字搜索,没有选择Hide userland threads前的情况;
同样以AliY为关键字搜索,这是选择Hide userland threads后的截图;
更多功能,自己摸索哦!htop这么好的工具,redhat系列却一直不愿把top替换了...求解!