还在用top命令监控系统?快试试htop

92 阅读7分钟

1. 什么是top命令?

在Linux系统中,top 是一个实时显示当前系统中进程状态的强大工具。它可以提供关于系统的重要信息,如,运行时间,正在登录的用户数量,系统平均负载,以及CPU和内存使用情况等。

2. top命令的应用场景

在终端中输入 top 命令并回车,就能看到一个动态更新的系统状态和进程列表,主要有以下应用场景:

  1. 系统性能调优:如果你觉得系统运行变慢或响应延迟,可以用 top 命令查看哪些进程占用的 CPU 或内存较多,然后对这些进程进行优化或调整。
  2. 故障排查:当系统出现问题,比如某个应用无响应或者系统负载过高,你可以用 top 命令来查看系统的状态,以帮助你确定问题的原因。
  3. 日常监控:作为系统管理员,你可能需要定期使用 top 命令来检查系统的运行状态,防止潜在的问题。

3. 理解top命令的输出

top 命令的输出主要包括两个部分:系统摘要和进程列表。

image.png

3.1 系统摘要

系统摘要部分提供了系统级别的信息,包括:

  • top - 10:05:22 up 1 day, 17:16, 4 users, load average: 0.03, 0.16, 0.17
  • Tasks: 166 total, 1 running, 165 sleeping, 0 stopped, 0 zombie
  • %Cpu(s): 0.3 us, 0.5 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  • KiB Mem : 3880248 total, 240012 free, 792968 used, 2847268 buff/cache
  • KiB Swap: 0 total, 0 free, 0 used. 2795128 avail Mem

这就像一份报告,告诉我们系统的运行状况,你可以把它想象成医生的诊断报告,反映出系统的“健康”状况。下面是每个字段的具体含义:

首行(系统运行时间、登录用户和负载平均值)

  • top - 10:05:22:当前系统时间,你可以把它看作是服务器的“手表”。
  • up 1 day, 17:16:系统已经运行了1天17小时16分钟。你可以把这看作是服务器“清醒”并工作的时间。
  • 4 users:当前有4个用户登录系统。
  • load average: 0.03, 0.16, 0.17:过去1分钟、5分钟、15分钟的系统平均负载。这就像衡量一个人过去一段时间内的平均工作强度。

第二行(任务)

  • Tasks: 166 total:当前有166个任务(进程),就像在办公室有166项任务待处理。
  • 1 running:1个正在运行的任务,就像有1项任务正在被处理。
  • 165 sleeping:165个睡眠的任务,就像165项任务正在等待被处理。
  • 0 stopped:0个停止的任务,就像没有任务被决定暂停处理。
  • 0 zombie:0个僵尸进程,就像没有任务在执行完毕后未被清理。

第三行(CPU 使用情况)

  • 各种CPU时间的百分比:

    • 0.3 us:0.3% 的 CPU 时间被用于执行用户进程(us 代表 user)。
    • 0.5 sy:0.5% 的 CPU 时间被用于执行系统进程(sy 代表 system)。
    • 0.0 ni:0.0% 的 CPU 时间被用于执行改变了优先级的用户进程(ni 代表 nice)。
    • 99.2 id:99.2% 的 CPU 时间处于空闲状态(id 代表 idle)。
    • 0.0 wa:0.0% 的 CPU 时间在等待I/O操作(wa 代表 wait)。
    • 0.0 hi:0.0% 的 CPU 时间处理硬件中断(hi 代表 hardware IRQ)。
    • 0.0 si:0.0% 的 CPU 时间处理软件中断(si 代表 software IRQ)。
    • 0.0 st:虚拟环境下,被偷走的CPU时间(st 代表 steal time)。

第四、五行(内存使用情况)

  • KiB Mem : 3880248 total, 240012 free, 792968 used, 2847268 buff/cache:内存使用情况。

    • total表示总内存,
    • free表示空闲内存,
    • used表示使用的内存,
    • buff/cache表示缓冲和缓存的内存。
  • KiB Swap: 0 total, 0 free, 0 used. 2795128 avail Mem:描述了交换空间(Swap)的使用情况,这就像备用的存储空间,当主存储空间不足时,就需要使用备用存储空间。

    • total表示总交换空间,
    • free表示空闲交换空间,
    • used表示使用的交换空间,
    • avail Mem表示可用内存。

3.2 进程列表

进程列表部分描述了每个进程的状态:

  • PID:进程ID,就像每项任务的编号。
  • USER:运行这个进程的用户,就像负责这项任务的员工。
  • PR:进程的优先级。
  • NI:nice值,用户设置的优先级。
  • VIRT:进程使用的虚拟内存总量。
  • RES:进程使用的、未被换出的物理内存大小。
  • SHR:共享内存大小。
  • S:进程的状态。S 表示休眠(sleeping)。
  • %CPU:CPU使用率。
  • %MEM:内存使用率。
  • TIME+ :此进程启动后占用的总CPU时间。
  • COMMAND:启动任务的命令行名称。

4. htop:强大的top替代品

htop 是一个“增强版”的 top 命令,提供了更直观的彩色界面,以及更方便的交互方式。

image.png

4.1 如何安装htop

在许多发行版中,htop可能并不是默认安装的。你可以使用包管理器来安装htop。下面是在一些常见发行版中的安装方法:

  • 在Debian或Ubuntu上,你可以使用如下命令:
sudo apt-get install htop
  • 在Fedora上,你可以使用如下命令:
sudo dnf install htop
  • 在CentOS上,你首先需要启用EPEL仓库,然后使用如下命令:
sudo yum install epel-release
sudo yum install htop

4.2 如何使用htop

  1. 启动 htop:在终端中输入 htop 命令,然后按回车键,就可以启动 htop

    htop
    

    htop 会显示一个包含多行的界面,每行代表一个进程。界面顶部是系统概况,包括 CPU 利用率、内存使用情况、进程数量等信息。

  2. 导航:在 htop 中,你可以使用上下箭头键来选择一个进程。选择的进程会被高亮显示。

  3. 排序:默认情况下,进程是按照 CPU 利用率进行排序的,占用 CPU 最多的进程在最上方。你可以按 F6 键来更改排序方式,然后使用箭头键来选择一个选项,按回车键确认。

  4. 查找:如果你想查找特定的进程,可以按 F3 键,然后输入你想查找的内容,比如进程的名字。

  5. 结束进程:如果你想结束一个进程,可以先用箭头键来选择这个进程,然后按 F9 键,选择你想要发送的信号(通常选择 SIGTERM),最后按回车键确认。

  6. 刷新htop 默认会自动刷新进程信息。如果你想手动刷新,可以按 F5 键。

  7. 退出:要退出 htop,可以按 F10 键或者 q 键。

这是 htop 的基本使用方法。你也可以查看 htop 的手册页(通过在终端输入 man htop 命令)来了解更多的功能和选项。

5. 比较不同的系统监控工具

对于不同的监控需求和场景,我们可以选择不同的工具。例如,如果我们想要实时查看系统和进程的信息,可以使用 top 或者 htop ;如果我们关心的是系统级别的性能,可以使用 vmstatsar ;如果我们关心的是IO设备的负载情况,可以使用 iostat ;如果我们只是想查看系统的内存使用情况,那么 free 就足够了。

下面的表格比较了不同工具各自的优点和缺点,可根据你的具体需求选择合适的工具。

工具适用场景优点缺点
top实时系统和进程监控实时动态显示,可以对进程执行操作信息较为复杂,不易于初学者理解
htop实时系统和进程监控彩色界面,直观,支持鼠标操作,显示信息更多并不是所有系统都预装
vmstat系统级别的性能监控提供详尽的系统性能指标没有实时的进程信息
iostatIO设备负载监控显示CPU利用率和磁盘I/O统计,对排查IO问题有帮助只提供有限的信息,需要一些时间去理解输出的数据
free系统内存使用监控输出简洁,易于理解信息有限
sar系统性能监控提供详尽的系统性能数据,支持历史数据输出复杂,需要一定的知识才能正确理解