导读
众所周知,系统中运行着很多进程(线程),进程(线程)运行就会占用系统资源,如CPU、内存、IO 。top
是一个动态的可以查看这些运行进程(线程)的命令,运维人员会频繁使用其来排查问题, htop
作为top
命令的“升级版”,提供更好的可视化效果和交互,可以提升我们日常排除问题的效率,htop
作者列举了以下和top
的对比。
我是top 我是htop
- In
htop
you can scroll the list vertically and horizontally to see all processes and full command lines.- In
top
you are subject to a delay for each unassigned key you press (especially annoying when multi-key escape sequences are triggered by accident).htop
starts faster (top
seems to collect data for a while before displaying anything).- In
htop
you don't need to type the process number to kill a process, intop
you do.- In
htop
you don't need to type the process number or the priority value to renice a process, intop
you do.- In
htop
you can kill multiple processes at once.top
is older, hence, more tested.
而作为我的体验来说,htop
在大多数情况的易用性是比top
好的,但是有两点还是top
命令才容易获取:
- CPU的相关详细统计信息
- 进程的相关详细统计信息
安装与简介
安装
- Ubuntu:
sudo apt-get install htop
- Centos:
yum install htop
- 源码安装: https://github.com/hishamhm/htop
简介
- 资源使用面板与运行统计面板可以非常方便的查看各个CPU的运行情况、内存、进程数、Load等,可以使用
F2
进行面板显示信息调整。
调整资源使用面板 - 进(线)程运行明细基本和
top
命令的显示一致,也可以通过F2
进行列显示调整。
调整进(线)程运行明细
常用字段解释
字段 | 解释 |
---|---|
PID | 进/线程ID |
PPID | 父进程ID |
S | 进程状态(S-休眠 R-运行 D-不可中断的休眠(IO) Z-僵尸) |
PRI | 进程内核调度优先级 |
NI | NICE值,越高其他进程的调度优先级越高 |
VIRT | virtual memory usage 虚拟内存 |
RES | resident memory usage 常驻内存 |
SHR | shared memory 共享内存 |
CPU | 进程使用CPU百分比 |
MEM | 进程使用内存百分比 |
DISK_READ | 进程每秒IO读操作的大小(B/s) |
DISK_WIRTE | 进程每秒IO写操作的大小(B/s) |
NLWP | 进程包含的线程数量 |
个人推荐将DISK_READ
,DISK_WRITE
,NLWP
这几个列显示选项打开,这样方便我们定位IO的问题,就不需要再借助iotop
等工具查看进程的IO情况。
常见运维使用场景
1.查看系统的整体运行情况
这是我们最常用的使用场景,比如我们收到了一个线上告警,登录机器排查问题的时候只要运行一下htop
命令就可以查看一下资源使用面板与运行统计面板就可以大概知道机器的资源使用情况。一般来说Load要小于CPU的核心数,CPU最好不要有一直使用率100%等情况,
2.排查异常进程
我们经常需要排查占用资源异常高的进程,使用htop
非常方便,可以简单的点击一下进(线)程运行明细标题就可以排序了,非常方便,下面是两个“栗子”:
- CPU占用率最高的进程:
- 当前消耗磁盘写IO资源最高的进程:
有时候我们也要查看异常状态的进程(进程状态为D
或者Z
),也只需在点击一下进(线)程运行明细标题的S
字段就可以了:
3.查看某个进程的运行状态
实现这个操作也非常简单,这里以查看nginx
进程为例,只需点击键盘的F4
输入筛选条件即可。
4.批量杀死进程
有时候我们还需要批量杀死一些进程,这里我们只要在要杀死的进程点击空格
键,选好后点击F9
,最后点击回车
就可以给进程发送信号杀死进程了。
结语
以上就是htop
的介绍和相关运维使用场景,当然还有功能和使用场景可以发掘去探索,欢迎大家补充与探讨~
网友评论