标签 top 下的文章

Windows 有其著名的任务管理器。Linux 有几个 GUI 和 命令行的系统监视器。每个 Linux 系统都都有几个这样的监视器。

在命令行中,top 命令可能是用于快速检查系统资源使用情况的最佳命令。

除了查看进程之外,使用 top 命令 可能会很麻烦。而这就是 htop 的优势所在。抛开双关语不谈,htop 是一个类似于 top 的实用程序,但具有更好的、用户友好的界面。

在本指南中,我将向你展示如何在 Linux 中安装和使用 htop

在 Linux 中安装 htop 实用程序

在大多数的 Linux 发行版中你不会找到预安装的 htop,但作为最流行的实用程序之一,你会在几乎每个 Linux 发行版的默认存储库中找到 htop

因此,如果你的机器是基于 Debian/Ubuntu 驱动的,则以下命令应该可以完成你的工作:

sudo apt install htop

类似的,如果你使用的是 Fedora,则可以使用以下的命令:

sudo dnf install htop

如果你想避免从源代码构建包,还有一个 Snap 包可用:

sudo snap install htop

如果你使用的是其它的发行版或者想从源代码构建,你可以随时参考 htop 的 GitHub 页面以获得详细说明。

完成安装后,你只需在终端中使用 htop 命令,它将反映系统中所有正在运行的进程:

htop

安装和使用 htop

htop 中,每个部分都使用颜色标识,所以让我们看看使用 htop 时每种颜色表示什么。

htop 中不同的颜色和统计信息表示什么

让我们从 CPU 使用率栏开始,因为它使用的颜色最缤纷多彩。

CPU 使用率栏

htop 中的 cpu 进程

  • 绿色:用户进程消耗的资源。
  • 蓝色:表示低优先级线程。
  • 红色:系统(内核)进程使用的 CPU 资源。
  • 水蓝色:表示虚拟化进程。

内存使用率栏

htop 中的内存栏

  • 绿色:系统进程正在使用的内存。
  • 蓝色:缓冲页面使用的内存。
  • 橙色:分配给缓存页面的内存。

统计数据

htop 中的任务统计

  • 1.86 是最后 1 分钟的平均负载。
  • 1.75 是最后 4 分钟的平均负载。
  • 1.47 是最后 15 分钟的平均负载。
  • Tasks: 166 表示一共有 166 个正在运行的进程。
  • 1249 thr 表示这 166 个进程由 1249 个线程处理。
  • 1 running 表示在这 166 个进程中,只有一个进程处于运行中。
  • The load average 表示一段时间内的平均系统负载。由于我的系统是 Hexa-Core,所以 6.0 以下的是没问题的。这个数字可能会超过,比如 6.1,所以即将要运行的进程必须等待正在进行的任务完成。
  • Uptime 表示你登录后运行的时长。

现在,让我们跳到实际的实现部分。

如何在 Linux 中使用 htop

由于 htop 主要用于检查系统资源,让我们看看如何根据资源消耗对进程进行排序。

根据资源消耗对进程进行排序

根据 CPU 和内存使用情况对进程进行排序最简单的方法是使用鼠标指针。将光标悬停在 CPU 或内存部分上,然后单击其中任何一个。

在那里你会看到一个三角形的图标 ,你可以根据它从最高到最低的资源消耗对进程进行排序:

但是,如果你正在处理远程服务器,你可能无法使用鼠标,在这种情况下,你可以使用键盘快捷键。

F6,它将显示每个可用的选项来对正在进行的进程进行排序:

使用键盘快捷键对 htop 中的进程进行排序

你可以使用方向键选择一个首选的排序选项,然后按回车键,结果应该会如预期的那样反映出来。

搜索特定进程

如果你想查找一个特定的进程及其资源消耗,你可以按 F3,它会给你一个搜索提示,如下所示:

在 htop 中搜索进程

例如,我搜索 htop,它用浅橙色高亮显示了进程。你可以按 F3 获得下一个结果。

过滤正在运行的进程

虽然搜索可能会让你获得预期的结果,但我发现使用关键字的过滤过程更加有效,因为它提供了一个过程列表。

要过滤进程,你必须按 F4 并输入进程的名称。例如,我过滤了与 gnome-boxes 相关的进程:

在 htop 中过滤进程

杀死进程

一旦找到最耗资源和不必要的进程,你只需按 F9,它就会向你显示终止信号:

在 htop 中杀死进程

我无法介绍所有的 15 个终止信号,我们有一个关于 不同终止信息 的单独指南,因此如果你想了解更多信息,可以参考该指南。

但我会建议你首先使用 SIGTERM,因为它是终止进程的最有效和友好的方式。

自定义 htop

在这里,我的目标是添加日期和时间并将配色方案更改为单色。

首先,按 F2,它会出现设置提示,允许用户更改 htop 的外观:

在 ubuntu 中自定义 htop

首先,将鼠标悬停在各个 Colors 部分并按回车键,这将允许我们更改配色方案。从那里,选择 Monochromatic 选项并按回车键保存更改:

在 Linux 中更改 htop 颜色

现在,返回到设置选项,然后使用向左方向键探索可用的指标:

探索 htop 中可用的指标

因为我打算添加日期和时间,所以我必须在找到它的选项后按回车键。

在这里,它允许你将日期和时间放置在左右两列中,你可以使用向上和向下的方向键更改列的顺序。

所以我将日期和时间指标放在最后一个样式选项中(你可以使用空格键更改样式):

在 htop 中添加日期和时间

完成日期和时间指标的对齐后,按回车键保存更改,然后按 F10 关闭设置提示。

总结

在本指南中,我解释了如何在不同的 Linux 发行版中安装 htop 实用程序,以及如何使用 htop 的一些基本功能来有效的管理系统资源。

但是 htop 可以做更多的事情,要了解更多信息,你可以随时参考它的手册页,我们有一个详细的指南,告诉你如何 在 Linux 中充分利用手册页


via: https://itsfoss.com/use-htop/

作者:Sagar Sharma 选题:lkxed 译者:perfiffer 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

htop 是一个流行的命令行工具,可以帮助监测 Linux 上的系统资源和性能。

它比通常默认开箱即用的 top 好

使用 htop,你可以对进程进行过滤和排序,以便更好地了解情况,获得正在运行的进程的树状视图,并在需要时杀死进程。

htp 2022

我使用 htop 而不是其他系统监控工具,因为它可以显示对我来说至关重要的东西,并允许在我需要控制运行中的服务时终止流氓进程或冻结进程。

但是,如果你想要其他显示更多信息,或一个看起来不同的东西,有哪些htop 替代品呢?让我们来看看。

1、atop

atop 2022

atop 可以提供所有运行的进程的细节。你可以得到你需要的所有数据,以了解你系统上的进程情况。

它还提供了对资源利用率进行永久记录的能力,以便进行长期分析。系统管理员可能会发现这比其他工具更有用。

不幸的是,它并没有为你提供漂亮的输出。因此,如果你想要的话,请继续看下面的其他替代品。

如何安装 atop?

对于基于 Ubuntu/Debian 的发行版,键入:

sudo apt install atop

2、vtop

vtop 2022

如果你想要一个漂亮的输出和管理进程的基本功能,vtop 是一个完美的系统监控工具。

正如我在其他一些文章中所说,它的输出看起来像终端中的 GUI。你可以使用鼠标,也可以选择禁用它。也可以定制它的主题。

它是用 Node.js 构建的。所以,你需要安装额外的包来安装它。

不幸的是,这个项目似乎不再积极维护。但是,在写这篇文章的时候,它对我来说还是有用的。

如何安装 vtop?

对于基于 Ubuntu 的发行版,在终端输入以下命令:

sudo apt install nodejs
sudo apt install npm
sudo npm install -g vtop

3、btop++

btop

btop++ 是 bashtop 和 bpytop 的一个 C++ 版本。是的,它是这些项目的第三次迭代,由同一个开发者完成。

btop++ 包括完全的鼠标支持,带有一个受游戏启发的菜单系统,可以让你过滤进程、树状视图等等。

如何安装 btop++?

使用官方软件库,你可以很容易地在 Fedora、openSUSE 和 FreeBSD 上安装它。

对于 Fedora,你可以键入:

sudo dnf install btop

你可以探索它的 GitHub 页面,了解在其他 Linux 发行版上的安装方式。

4、Glances

glances 2022

Glances 与 htop 类似,但有更多的功能。

它是一个跨平台的系统监控工具,可以将数据以 CSV 或其他格式导出,用于 InfluxDB、Elasticsearch 等。

你也可以利用它的网页用户界面,远程(或在不能访问终端的情况下)查看统计数据。

如何安装 Glances?

对于基于 Ubuntu 的发行版,你可以键入:

sudo apt install glances

5、nmon

nmon 2022 1

nmon 是一个令人印象深刻的监测工具,它可以让你控制你想显示的输出内容。

你可以提取监测数据(以 CSV 格式导出)并用于进一步分析。它很容易切换统计数据和在不同的视图之间进行切换。

默认情况下,它每两秒刷新一次数据,但你可以自定义它,并使用更多的选项来调整你的体验。

如何安装 nmon?

你可以在官方软件库中找到它。对于基于 Ubuntu 的发行版,在终端键入以下内容:

sudo apt install nmon

总结

top 2022

top 命令工具被植入在你的 Linux 系统中。如果你想要一个基本的监控工具,想要关注系统进程和一些统计信息,top 就足够了。

我不确定它是否可以算作比 htop 更强的体验,这也是 top 没有被列入主要列表的原因。

正如你在这里看到的,一些监控工具可能很有趣,而且证明比 htop 更有洞察力。

你最喜欢的 htop 替代品是什么?你认为 htop 对你的使用情况来说已经足够了吗?欢迎在下面的评论中让我知道你的想法。


via: https://itsfoss.com/htop-alternatives/

作者:Ankush Das 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在之前的文章中我们已经讨论过 如何在 Linux 中找出内存消耗最大的进程。你可能也会遇到在 Linux 系统中找出 CPU 占用高的进程的情形。如果是这样,那么你需要列出系统中 CPU 占用高的进程列表来确定。我认为只有两种方法能实现:使用 top 命令ps 命令。出于一些理由,我更倾向于用 top 命令而不是 ps 命令。但是两个工具都能达到你要的目的,所以你可以根据需求决定使用哪个。这两个工具都被 Linux 系统管理员广泛使用。

1) 怎样使用 top 命令找出 Linux 中 CPU 占用高的进程

在所有监控 Linux 系统性能的工具中,Linux 的 top 命令是最好的也是最知名的一个。top 命令提供了 Linux 系统运行中的进程的动态实时视图。它能显示系统的概览信息和 Linux 内核当前管理的进程列表。它显示了大量的系统信息,如 CPU 使用、内存使用、交换内存、运行的进程数、目前系统开机时间、系统负载、缓冲区大小、缓存大小、进程 PID 等等。默认情况下,top 命令的输出结果按 CPU 占用进行排序,每 5 秒中更新一次结果。如果你想要一个更清晰的视图来更深入的分析结果,以批处理模式运行 top 命令 是最好的方法。同时,你需要 理解 top 命令输出结果的含义 ,这样才能解决系统的性能问题。

# top -b | head -50

top - 00:19:17 up 14:23,  1 user,  load average: 2.46, 2.18, 1.97
Tasks: 306 total,   1 running, 305 sleeping,   0 stopped,   0 zombie
%Cpu0  : 10.4 us,  3.0 sy,  0.0 ni, 83.9 id,  0.0 wa,  1.3 hi,  1.3 si,  0.0 st
%Cpu1  : 17.0 us,  3.0 sy,  0.0 ni, 78.7 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu2  : 13.0 us,  4.0 sy,  0.0 ni, 81.3 id,  0.0 wa,  0.3 hi,  1.3 si,  0.0 st
%Cpu3  : 12.3 us,  3.3 sy,  0.0 ni, 82.5 id,  0.3 wa,  0.7 hi,  1.0 si,  0.0 st
%Cpu4  : 12.2 us,  3.0 sy,  0.0 ni, 82.8 id,  0.7 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu5  :  6.4 us,  2.7 sy,  0.0 ni, 89.2 id,  0.0 wa,  0.7 hi,  1.0 si,  0.0 st
%Cpu6  : 26.7 us,  3.4 sy,  0.0 ni, 68.6 id,  0.0 wa,  0.7 hi,  0.7 si,  0.0 st
%Cpu7  : 15.6 us,  4.0 sy,  0.0 ni, 78.8 id,  0.0 wa,  0.7 hi,  1.0 si,  0.0 st
KiB Mem : 16248556 total,  1448920 free,  8571484 used,  6228152 buff/cache
KiB Swap: 17873388 total, 17873388 free,        0 used.  4596044 avail Mem
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 2179 daygeek   20     3106324 613584 327564 S  79.5   3.8  14:19.76 Web Content
 1714 daygeek   20     4603372 974600 403504 S  20.2   6.0  65:18.91 firefox
 1227 daygeek   20     4192012 376332 180348 S  13.9   2.3  20:43.26 gnome-shell
18324 daygeek   20     3296192 766040 127948 S   6.3   4.7   9:18.12 Web Content
 1170 daygeek   20     1008264 572036 546180 S   6.0   3.5  18:07.85 Xorg
 4684 daygeek   20     3363708   1.1g   1.0g S   3.6   7.2  13:49.92 VirtualBoxVM
 4607 daygeek   20     4591040   1.7g   1.6g S   3.0  11.0  14:09.65 VirtualBoxVM
 1211 daygeek    9 -11 2865268  21032  16588 S   2.0   0.1  10:46.37 pulseaudio
 4562 daygeek   20     1096888  28812  21044 S   1.7   0.2   4:42.93 VBoxSVC
 1783 daygeek   20     3123888 376896 134788 S   1.3   2.3  39:32.56 Web Content
 3286 daygeek   20     3089736 404088 184968 S   1.0   2.5  41:57.44 Web Content

上面的命令的各部分解释:

  • top:命令
  • -b:批次档模式
  • head -50:显示输出结果的前 50 个
  • PID:进程的 ID
  • USER:进程的归属者
  • PR:进程的等级
  • NI:进程的 NICE 值
  • VIRT:进程使用的虚拟内存
  • RES:进程使用的物理内存
  • SHR:进程使用的共享内存
  • S:这个值表示进程的状态: S = 睡眠,R = 运行,Z = 僵尸进程
  • %CPU:进程占用的 CPU 比例
  • %MEM:进程使用的 RAM 比例
  • TIME+:进程运行了多长时间
  • COMMAND:进程名字

如果你想看命令的完整路径而不是命令名字,以运行下面的格式 top 命令:

# top -c -b | head -50

top - 00:28:49 up 14:33,  1 user,  load average: 2.43, 2.49, 2.23
Tasks: 305 total,   1 running, 304 sleeping,   0 stopped,   0 zombie
%Cpu0  : 11.7 us,  3.7 sy,  0.0 ni, 82.3 id,  0.0 wa,  1.0 hi,  1.3 si,  0.0 st
%Cpu1  : 13.6 us,  3.3 sy,  0.0 ni, 81.1 id,  0.7 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu2  : 10.9 us,  2.6 sy,  0.0 ni, 85.1 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu3  : 16.0 us,  2.6 sy,  0.0 ni, 80.1 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu4  :  9.2 us,  3.6 sy,  0.0 ni, 85.9 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu5  : 15.6 us,  2.9 sy,  0.0 ni, 80.5 id,  0.0 wa,  0.3 hi,  0.7 si,  0.0 st
%Cpu6  : 11.6 us,  4.3 sy,  0.0 ni, 82.7 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu7  :  8.0 us,  3.0 sy,  0.0 ni, 87.3 id,  0.0 wa,  0.7 hi,  1.0 si,  0.0 st
KiB Mem : 16248556 total,  1022456 free,  8778508 used,  6447592 buff/cache
KiB Swap: 17873388 total, 17873388 free,        0 used.  4201560 avail Mem
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
18527 daygeek   20     3151820 624808 325748 S  52.8   3.8  59:26.72 /usr/lib/firefox/firefox -contentproc -childID 18 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
 1714 daygeek   20     4764668 910940 443228 S  21.5   5.6  68:59.33 /usr/lib/firefox/firefox --new-window
 1227 daygeek   20     4193108 377344 181404 S  11.6   2.3  21:47.36 /usr/bin/gnome-shell
 1170 daygeek   20     1008820 572700 546844 S   5.6   3.5  19:05.10 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
18324 daygeek   20     3300288 789344 127948 S   5.0   4.9   9:46.89 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
 4684 daygeek   20     3363708   1.1g   1.0g S   3.6   7.2  14:10.18 /usr/lib/virtualbox/VirtualBoxVM --comment CentOS7 --startvm 002f47b8-2af2-48f5-be1d-67b67e03514c --no-startvm-errormsgbox
 4607 daygeek   20     4591040   1.7g   1.6g S   3.0  11.0  14:28.86 /usr/lib/virtualbox/VirtualBoxVM --comment Ubuntu-18.04 --startvm e8c32dbb-8b01-41b0-977a-bf28b9db1117 --no-startvm-errormsgbox
 1783 daygeek   20     3132640 451924 132168 S   2.6   2.8  39:49.66 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/l+
 1211 daygeek    9 -11 2865268  21272  16828 S   2.0   0.1  11:01.29 /usr/bin/pulseaudio --daemonize=no
 4562 daygeek   20     1096888  28812  21044 S   1.7   0.2   4:49.33 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
16865 daygeek   20     3073364 430596 124652 S   1.3   2.7   8:04.02 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
 2179 daygeek   20     2945348 429644 172940 S   1.0   2.6  15:20.90 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLen 7821 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /us+

2) 怎样使用 ps 命令找出 Linux 中 CPU 占用高的进程

ps 进程状态 process status 的缩写,它能显示系统中活跃的/运行中的进程的信息。它提供了当前进程及其详细信息,诸如用户名、用户 ID、CPU 使用率、内存使用、进程启动日期时间、命令名等等的快照。

# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head

  PID  PPID %MEM %CPU CMD
18527  1714  4.2 40.3 /usr/lib/firefox/firefox -contentproc -childID 18 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 1714  1152  5.6  8.0 /usr/lib/firefox/firefox --new-window
18324  1714  4.9  6.3 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 3286  1714  2.0  5.1 /usr/lib/firefox/firefox -contentproc -childID 14 -isForBrowser -prefsLen 8078 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 1783  1714  3.0  4.5 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 1227  1152  2.3  2.5 /usr/bin/gnome-shell
 1170  1168  3.5  2.2 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
16865  1714  2.5  2.1 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 2179  1714  2.7  1.8 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLen 7821 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab

上面的命令的各部分解释:

  • ps:命令名字
  • -e:选择所有进程
  • -o:自定义输出格式
  • –sort=-%cpu:基于 CPU 使用率对输出结果排序
  • head:显示结果的前 10 行
  • PID:进程的 ID
  • PPID:父进程的 ID
  • %MEM:进程使用的 RAM 比例
  • %CPU:进程占用的 CPU 比例
  • Command:进程名字

如果你只想看命令名字而不是命令的绝对路径,以运行下面的格式 ps 命令:

# ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head

  PID  PPID %MEM %CPU COMMAND
18527  1714  4.1 40.4 Web Content
 1714  1152  5.7  8.0 firefox
18324  1714  4.9  6.3 Web Content
 3286  1714  2.0  5.1 Web Content
 1783  1714  3.0  4.5 Web Content
 1227  1152  2.3  2.5 gnome-shell
 1170  1168  3.5  2.2 Xorg
16865  1714  2.4  2.1 Web Content
 2179  1714  2.7  1.8 Web Content

via: https://www.2daygeek.com/how-to-find-high-cpu-consumption-processes-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:lxbwolf 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

top 命令 是每个人都在使用的用于 监控 Linux 系统性能 的最好的命令。你可能已经知道 top 命令的绝大部分操作,除了很少的几个操作,如果我没错的话,批处理模式就是其中之一。

大部分的脚本编写者和开发人员都知道这个,因为这个操作主要就是用来编写脚本。

如果你不了解这个,不用担心,我们将在这里介绍它。

什么是 top 命令的批处理模式

批处理模式允许你将 top 命令的输出发送至其他程序或者文件中。

在这个模式中,top 命令将不会接收输入并且持续运行,直到迭代次数达到你用 -n 选项指定的次数为止。

如果你想解决 Linux 服务器上的任何性能问题,你需要正确的 理解 top 命令的输出

1) 如何在批处理模式下运行 top 命令

默认地,top 命令按照 CPU 的使用率来排序输出结果,所以当你在批处理模式中运行以下命令时,它会执行同样的操作并打印前 35 行:

# top -bc | head -35

top - 06:41:14 up 8 days, 20:24,  1 user,  load average: 0.87, 0.77, 0.81
Tasks: 139 total,   1 running, 136 sleeping,   0 stopped,   2 zombie
%Cpu(s):  0.0 us,  3.2 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1595932 free,   886736 used,  1398272 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2648472 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     1 root      20   0  191144   2800   1596 S   0.0  0.1   5:43.63 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.32 [kthreadd]
     3 root      20   0       0      0      0 S   0.0  0.0   0:28.10 [ksoftirqd/0]
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/0:0H]
     7 root      rt   0       0      0      0 S   0.0  0.0   0:33.96 [migration/0]
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [rcu_bh]
     9 root      20   0       0      0      0 S   0.0  0.0  63:05.12 [rcu_sched]
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [lru-add-drain]
    11 root      rt   0       0      0      0 S   0.0  0.0   0:08.79 [watchdog/0]
    12 root      rt   0       0      0      0 S   0.0  0.0   0:08.82 [watchdog/1]
    13 root      rt   0       0      0      0 S   0.0  0.0   0:44.27 [migration/1]
    14 root      20   0       0      0      0 S   0.0  0.0   1:22.45 [ksoftirqd/1]
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/1:0H]
    18 root      20   0       0      0      0 S   0.0  0.0   0:00.01 [kdevtmpfs]
    19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [netns]
    20 root      20   0       0      0      0 S   0.0  0.0   0:01.35 [khungtaskd]
    21 root       0 -20       0      0      0 S   0.0  0.0   0:00.02 [writeback]
    22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kintegrityd]
    23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [bioset]
    24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kblockd]
    25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [md]
    26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [edac-poller]
    33 root      20   0       0      0      0 S   0.0  0.0   1:19.07 [kswapd0]
    34 root      25   5       0      0      0 S   0.0  0.0   0:00.00 [ksmd]
    35 root      39  19       0      0      0 S   0.0  0.0   0:12.80 [khugepaged]
    36 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [crypto]
    44 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kthrotld]
    46 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kmpath_rdacd]

2) 如何在批处理模式下运行 top 命令并按内存使用率排序结果

在批处理模式中运行以下命令按内存使用率对结果进行排序:

# top -bc -o +%MEM | head -n 20

top - 06:42:00 up 8 days, 20:25,  1 user,  load average: 0.66, 0.74, 0.80
Tasks: 146 total,   1 running, 145 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1422044 free,  1059176 used,  1399720 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2475984 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 18105 mysql     20   0 1453900 156096   8816 S   0.0  4.0   2:12.98 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
  1841 root      20   0  228980 107036   5360 S   0.0  2.8   0:05.56 /usr/local/cpanel/3rdparty/perl/528/bin/perl -T -w /usr/local/cpanel/3rdparty/bin/spamd --max-children=3 --max-spare=1 --allowed-ips=127.0.0.+
  4301 root      20   0  230208 104608   1816 S   0.0  2.7   0:03.77 spamd child
  8139 nobody    20   0  257000  27108   3408 S   0.0  0.7   0:00.04 /usr/sbin/httpd -k start
  7961 nobody    20   0  256988  26912   3160 S   0.0  0.7   0:00.05 /usr/sbin/httpd -k start
  8190 nobody    20   0  256976  26812   3140 S   0.0  0.7   0:00.05 /usr/sbin/httpd -k start
  8353 nobody    20   0  256976  26812   3144 S   0.0  0.7   0:00.04 /usr/sbin/httpd -k start
  8629 nobody    20   0  256856  26736   3108 S   0.0  0.7   0:00.02 /usr/sbin/httpd -k start
  8636 nobody    20   0  256856  26712   3100 S   0.0  0.7   0:00.03 /usr/sbin/httpd -k start
  8611 nobody    20   0  256844  25764   2228 S   0.0  0.7   0:00.01 /usr/sbin/httpd -k start
  8451 nobody    20   0  256844  25760   2220 S   0.0  0.7   0:00.04 /usr/sbin/httpd -k start
  8610 nobody    20   0  256844  25748   2224 S   0.0  0.7   0:00.01 /usr/sbin/httpd -k start
  8632 nobody    20   0  256844  25744   2216 S   0.0  0.7   0:00.03 /usr/sbin/httpd -k start

上面命令的详细信息:

  • -b:批处理模式选项
  • -c:打印运行中的进程的绝对路径
  • -o:指定进行排序的字段
  • head:输出文件的第一部分
  • -n:打印前 n 行

3) 如何在批处理模式下运行 top 命令并按照指定的用户进程对结果进行排序

如果你想要按照指定用户进程对结果进行排序请运行以下命令:

# top -bc -u mysql | head -n 10

top - 06:44:58 up 8 days, 20:27,  1 user,  load average: 0.99, 0.87, 0.84
Tasks: 140 total,   1 running, 137 sleeping,   0 stopped,   2 zombie
%Cpu(s): 13.3 us,  3.3 sy,  0.0 ni, 83.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1589832 free,   885648 used,  1405460 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2649412 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 18105 mysql     20   0 1453900 156888   8816 S   0.0  4.0   2:16.42 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

4) 如何在批处理模式下运行 top 命令并按照处理时间进行排序

在批处理模式中使用以下 top 命令按照处理时间对结果进行排序。这展示了任务从启动以来已使用的总 CPU 时间。

但是如果你想要检查一个进程在 Linux 上运行了多长时间请看接下来的文章:

# top -bc -o TIME+ | head -n 20

top - 06:45:56 up 8 days, 20:28,  1 user,  load average: 0.56, 0.77, 0.81
Tasks: 148 total,   1 running, 146 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.0 us,  3.1 sy,  0.0 ni, 96.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1378664 free,  1094876 used,  1407400 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2440332 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     9 root      20   0       0      0      0 S   0.0  0.0  63:05.70 [rcu_sched]
   272 root      20   0       0      0      0 S   0.0  0.0  16:12.13 [xfsaild/vda1]
  3882 root      20   0  229832   6212   1220 S   0.0  0.2   9:00.84 /usr/sbin/httpd -k start
     1 root      20   0  191144   2800   1596 S   0.0  0.1   5:43.75 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
  3761 root      20   0   68784   9820   2048 S   0.0  0.3   5:09.67 tailwatchd
  3529 root      20   0  404380   3472   2604 S   0.0  0.1   3:24.98 /usr/sbin/rsyslogd -n
  3520 root      20   0  574208    572    164 S   0.0  0.0   3:07.74 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
   444 dbus      20   0   58444   1144    612 S   0.0  0.0   2:23.90 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
 18105 mysql     20   0 1453900 157152   8816 S   0.0  4.0   2:17.29 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
   249 root       0 -20       0      0      0 S   0.0  0.0   1:28.83 [kworker/0:1H]
    14 root      20   0       0      0      0 S   0.0  0.0   1:22.46 [ksoftirqd/1]
    33 root      20   0       0      0      0 S   0.0  0.0   1:19.07 [kswapd0]
   342 root      20   0   39472   2940   2752 S   0.0  0.1   1:18.17 /usr/lib/systemd/systemd-journald

5) 如何在批处理模式下运行 top 命令并将结果保存到文件中

如果出于解决问题的目的,你想要和别人分享 top 命令的输出,请使用以下命令重定向输出到文件中:

# top -bc | head -35 > top-report.txt

# cat top-report.txt

top - 06:47:11 up 8 days, 20:30,  1 user,  load average: 0.67, 0.77, 0.81
Tasks: 133 total,   4 running, 129 sleeping,   0 stopped,   0 zombie
%Cpu(s): 59.4 us, 12.5 sy,  0.0 ni, 28.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1596268 free,   843284 used,  1441388 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2659084 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  9686 daygeekc  20   0  406132  62184  43448 R  94.1  1.6   0:00.34 /opt/cpanel/ea-php56/root/usr/bin/php-cgi
  9689 nobody    20   0  256588  24428   1184 S   5.9  0.6   0:00.01 /usr/sbin/httpd -k start
     1 root      20   0  191144   2800   1596 S   0.0  0.1   5:43.79 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.32 [kthreadd]
     3 root      20   0       0      0      0 S   0.0  0.0   0:28.11 [ksoftirqd/0]
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/0:0H]
     7 root      rt   0       0      0      0 S   0.0  0.0   0:33.96 [migration/0]
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [rcu_bh]
     9 root      20   0       0      0      0 R   0.0  0.0  63:05.82 [rcu_sched]
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [lru-add-drain]
    11 root      rt   0       0      0      0 S   0.0  0.0   0:08.79 [watchdog/0]
    12 root      rt   0       0      0      0 S   0.0  0.0   0:08.82 [watchdog/1]
    13 root      rt   0       0      0      0 S   0.0  0.0   0:44.28 [migration/1]
    14 root      20   0       0      0      0 S   0.0  0.0   1:22.46 [ksoftirqd/1]
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/1:0H]
    18 root      20   0       0      0      0 S   0.0  0.0   0:00.01 [kdevtmpfs]
    19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [netns]
    20 root      20   0       0      0      0 S   0.0  0.0   0:01.35 [khungtaskd]
    21 root       0 -20       0      0      0 S   0.0  0.0   0:00.02 [writeback]
    22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kintegrityd]
    23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [bioset]
    24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kblockd]
    25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [md]
    26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [edac-poller]
    33 root      20   0       0      0      0 S   0.0  0.0   1:19.07 [kswapd0]
    34 root      25   5       0      0      0 S   0.0  0.0   0:00.00 [ksmd]
    35 root      39  19       0      0      0 S   0.0  0.0   0:12.80 [khugepaged]
    36 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [crypto]

如何按照指定字段对结果进行排序

top 命令的最新版本中, 按下 f 键进入字段管理界面。

要使用新字段进行排序, 请使用 up/down 箭头选择正确的选项,然后再按下 s 键进行排序。最后按 q 键退出此窗口。

Fields Management for window 1:Def, whose current sort field is %CPU
    Navigate with Up/Dn, Right selects for move then  or Left commits,
    'd' or  toggles display, 's' sets sort.  Use 'q' or  to end!
 PID     = Process Id             nsUTS   = UTS namespace Inode
 USER    = Effective User Name    LXC     = LXC container name
 PR      = Priority               RSan    = RES Anonymous (KiB)
 NI      = Nice Value             RSfd    = RES File-based (KiB)
 VIRT    = Virtual Image (KiB)    RSlk    = RES Locked (KiB)
 RES     = Resident Size (KiB)    RSsh    = RES Shared (KiB)
 SHR     = Shared Memory (KiB)    CGNAME  = Control Group name
 S       = Process Status         NU      = Last Used NUMA node
 %CPU    = CPU Usage
 %MEM    = Memory Usage (RES)
 TIME+   = CPU Time, hundredths
 COMMAND = Command Name/Line
 PPID    = Parent Process pid
 UID     = Effective User Id
 RUID    = Real User Id
 RUSER   = Real User Name
 SUID    = Saved User Id
 SUSER   = Saved User Name
 GID     = Group Id
 GROUP   = Group Name
 PGRP    = Process Group Id
 TTY     = Controlling Tty
 TPGID   = Tty Process Grp Id
 SID     = Session Id
 nTH     = Number of Threads
 P       = Last Used Cpu (SMP)
 TIME    = CPU Time
 SWAP    = Swapped Size (KiB)
 CODE    = Code Size (KiB)
 DATA    = Data+Stack (KiB)
 nMaj    = Major Page Faults
 nMin    = Minor Page Faults
 nDRT    = Dirty Pages Count
 WCHAN   = Sleeping in Function
 Flags   = Task Flags
 CGROUPS = Control Groups
 SUPGIDS = Supp Groups IDs
 SUPGRPS = Supp Groups Names
 TGID    = Thread Group Id
 OOMa    = OOMEM Adjustment
 OOMs    = OOMEM Score current
 ENVIRON = Environment vars
 vMj     = Major Faults delta
 vMn     = Minor Faults delta
 USED    = Res+Swap Size (KiB)
 nsIPC   = IPC namespace Inode
 nsMNT   = MNT namespace Inode
 nsNET   = NET namespace Inode
 nsPID   = PID namespace Inode
 nsUSER  = USER namespace Inode

top 命令的旧版本,请按 shift+fshift+o 键进入字段管理界面进行排序。

要使用新字段进行排序,请选择相应的排序字段字母, 然后按下回车键排序。

Current Sort Field:  N  for window 1:Def
 Select sort field via field letter, type any other key to return
  a: PID        = Process Id
  b: PPID       = Parent Process Pid
  c: RUSER      = Real user name
  d: UID        = User Id
  e: USER       = User Name
  f: GROUP      = Group Name
  g: TTY        = Controlling Tty
  h: PR         = Priority
  i: NI         = Nice value
  j: P          = Last used cpu (SMP)
  k: %CPU       = CPU usage
  l: TIME       = CPU Time
  m: TIME+      = CPU Time, hundredths
* N: %MEM       = Memory usage (RES)
  o: VIRT       = Virtual Image (kb)
  p: SWAP       = Swapped size (kb)
  q: RES        = Resident size (kb)
  r: CODE       = Code size (kb)
  s: DATA       = Data+Stack size (kb)
  t: SHR        = Shared Mem size (kb)
  u: nFLT       = Page Fault count
  v: nDRT       = Dirty Pages count
  w: S          = Process Status
  x: COMMAND    = Command name/line
  y: WCHAN      = Sleeping in Function
  z: Flags      = Task Flags
 Note1:
   If a selected sort field can't be
   shown due to screen width or your
   field order, the '<' and '>' keys
   will be unavailable until a field
   within viewable range is chosen.
 Note2:
   Field sorting uses internal values,
   not those in column display.  Thus,
   the TTY & WCHAN fields will violate
   strict ASCII collating sequence.
   (shame on you if WCHAN is chosen)

via: https://www.2daygeek.com/linux-run-execute-top-command-in-batch-mode/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:way-ww 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出

watchtopac 命令为我们监视 Linux 服务器上的活动提供了一些十分高效的途径。

为了在获取系统活动时更加轻松,Linux 系统提供了一系列相关的命令。在这篇文章中,我们就一起来看看这些对我们很有帮助的命令吧。

watch 命令

watch 是一个用来轻松地重复检测 Linux 系统中一系列数据命令,例如用户活动、正在运行进程、登录、内存使用等。这个命令实际上是重复地运行一个特定的命令,每次都会重写之前显示的输出,它提供了一个比较方便的方式用以监测在你的系统中发生的活动。

首先以一个基础且不是特别有用的命令开始,你可以运行 watch -n 5 date,然后你可以看到在终端中显示了当前的日期和时间,这些数据会每五秒更新一次。你可能已经猜到了,-n 5 选项指定了运行接下来一次命令需要等待的秒数。默认是 2 秒。这个命令将会一直运行并按照指定的时间更新显示,直到你使用 ^C 停下它。

Every 5.0s: date                             butterfly: Wed Jan 23 15:59:14 2019

Wed Jan 23 15:59:14 EST 2019

下面是一个更有趣的命令实例,你可以监控一个在服务器中登录用户的列表,该列表会按照指定的时间定时更新。就像下面写到的,这个命令会每 10 秒更新一次这个列表。登出的用户将会从当前显示的列表中消失,那些新登录的将会被添加到这个表格当中。如果没有用户再登录或者登出,这个表格跟之前显示的将不会有任何不同。

$ watch -n 10 who

Every 10.0s: who                             butterfly: Tue Jan 23 16:02:03 2019

shs      :0           2019-01-23 09:45 (:0)
dory     pts/0        2019-01-23 15:50 (192.168.0.5)
nemo     pts/1        2019-01-23 16:01 (192.168.0.15)
shark    pts/3        2019-01-23 11:11 (192.168.0.27)

如果你只是想看有多少用户登录进来,可以通过 watch 调用 uptime 命令获取用户数和负载的平均水平,以及系统的工作状况。

$ watch uptime

Every 2.0s: uptime                           butterfly: Tue Jan 23 16:25:48 2019

 16:25:48 up 22 days,  4:38,  3 users,  load average: 1.15, 0.89, 1.02

如果你想使用 watch 重复一个包含了管道的命令,就需要将该命令用引号括起来,就比如下面这个每五秒显示一次有多少进程正在运行的命令。

$ watch -n 5 'ps -ef | wc -l'

Every 5.0s: ps -ef | wc -l butterfly: Tue Jan 23 16:11:54 2019

245

要查看内存使用,你也许会想要试一下下面的这个命令组合:

$ watch -n 5 free -m

Every 5.0s: free -m butterfly: Tue Jan 23 16:34:09 2019

Every 5.0s: free -m                          butterfly: Tue Jan 23 16:34:09 2019

              total        used        free      shared  buff/cache   available
Mem:           5959         776        3276          12        1906        4878
Swap:          2047           0        2047

你可以在 watch 后添加一些选项查看某个特定用户下运行的进程,不过 top 为此提供了更好的选择。

top 命令

如果你想查看某个特定用户下的进程,top 命令的 -u 选项可以很轻松地帮你达到这个目的。

$ top -u nemo
top - 16:14:33 up 2 days,  4:27,  3 users,  load average: 0.00, 0.01, 0.02
Tasks: 199 total,   1 running, 198 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   5959.4 total,   3277.3 free,    776.4 used,   1905.8 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   4878.4 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
23026 nemo      20   0   46340   7820   6504 S   0.0   0.1   0:00.05 systemd
23033 nemo      20   0  149660   3140     72 S   0.0   0.1   0:00.00 (sd-pam)
23125 nemo      20   0   63396   5100   4092 S   0.0   0.1   0:00.00 sshd
23128 nemo      20   0   16836   5636   4284 S   0.0   0.1   0:00.03 zsh

你可能不仅可以看到某个用户下的进程,还可以查看每个进程所占用的资源,以及系统总的工作状况。

ac 命令

如果你想查看系统中每个用户登录的时长,可以使用 ac 命令。运行该命令之前首先需要安装 acct(Debian 等)或者 psacct(RHEL、Centos 等)包。

ac 命令有一系列的选项,该命令从 wtmp 文件中拉取数据。这个例子展示的是最近用户登录的总小时数。

$ ac
        total     1261.72

这个命令显示了用户登录的总的小时数:

$ ac -p
        shark                                5.24
        nemo                                 5.52
        shs                               1251.00
        total     1261.76

这个命令显示了每天登录的用户小时数:

$ ac -d | tail -10

Jan 11  total        0.05
Jan 12  total        1.36
Jan 13  total       16.39
Jan 15  total       55.33
Jan 16  total       38.02
Jan 17  total       28.51
Jan 19  total       48.66
Jan 20  total        1.37
Jan 22  total       23.48
Today   total        9.83

总结

Linux 系统上有很多命令可以用于检查系统活动。watch 命令允许你以重复的方式运行任何命令,并观察输出有何变化。top 命令是一个专注于用户进程的最佳选项,以及允许你以动态方式查看进程的变化,还可以使用 ac 命令检查用户连接到系统的时间。


via: https://www.networkworld.com/article/3335200/linux/how-to-monitor-activity-on-your-linux-server.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:dianbanjiu 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 GitHub 和 GitLab 上,不断有来自世界各地的开源应用程序和工具涌现。其中有全新的应用程序,也有针对现有各种被广泛使用的 Linux 程序的替代方案。在本文档中,我会介绍一些针对 top 工具(也就是命令行任务管理器程序)的替代方案。

top 工具的替代方案

在本文中,将会介绍以下 6 种 top 工具的替代方案:

  1. Htop
  2. Vtop
  3. Gtop
  4. Gotop
  5. Ptop
  6. Hegemon

如果后续有更多类似的工具,原作者会在原文进行更新。如果你对此有兴趣,可以持续关注。

Htop

htop 是一个流行的开源跨平台交互式进程管理器,也是我最喜欢的系统活动监控工具。htop 是对原版 top 工具的扩展。它最初只是用于 Linux 系统,后来开发者们不断为其添加对其它类 Unix 操作系统的支持,包括 FreeBSD 和 Mac OS。htop 还是一个自由开源软件,它基于 ncurses 并按照 GPLv2 发布。

和原版的 top 工具相比,htop 工具有这些优势:

  • htoptop 启动更快
  • htop 支持横向滚动和纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行
  • top 工具中进行杀死进程、更改进程优先级这些操作时,需要输入进程 ID,而在 htop 工具中则不需要输入
  • htop 中可以同时杀死多个进程
  • top 中每次输入一个未预设的键都要等待一段时间,尤其是在多个键组成转义字符串的时候就更麻烦了

在很多 Linux 发行版的默认软件仓库中,都带有了 htop

在基于 Arch 的操作系统中则可以执行以下命令来安装 htop

$ sudo pacman -S htop

在基于 Debian 的操作系统使用以下命令:

$ sudo apt install htop

在使用 RPM 软件管理的操作系统使用以下命令:

$ sudo dnf install htop

或者

$ sudo yum install htop

在 openSUSE 系统中:

$ sudo zypper in htop

用法

不带任何参数执行 htop 时,会显示如下画面:

$ htop

从图上可以看出,htop 会在界面顶部显示内存、交换空间、任务总数、系统平均负载、系统正常运行时间这些常用指标,在下方则和 top 一样显示进程列表,并且将进程的 ID、用户、进程优先级、进程 nice 值、虚拟内存使用情况、CPU 使用情况、内存使用情况等信息以多列显示出来。如果你想详细了解这些数据的含义,可以在这里阅读参考。

top 不同的是,htop 支持对不同的操作使用专有的按键。以下列出一些用于与 htop 交互的快捷键:

  • F1h?:进入帮助界面。
  • F2Shift+s:进入设置界面。在设置界面中可以配置仪表板界面顶部显示哪些数据,以及设置颜色方案、显示列、显示顺序等等多种参数。
  • F3/:在进程列表中进行搜索。
  • F4\:进入筛选模式。输入一个字符串,筛选出包含这个字符串的进程。进入筛选模式后再按一次 F4 或者 ESC 可以退出筛选模式。
  • F5t:切换默认显示模式和树型显示模式,在树型显示模式下按 + 可以查看子树。
  • F6<>:依次按照进程 ID、用户、进程优先级、进程 nice 值、CPU 使用率、内存使用率排序显示。
  • F7]:提高所选进程的优先级。
  • F8[:降低所选进程的优先级。
  • F9k:杀死所选进程。可以用 / 键选择不同的进程并按 F9 杀死进程。
  • F10q: 退出 htop

以上这些快捷键都在 htop 界面底部显示。

需要注意的是,这其中有一些快捷键可能会与已有的快捷键发生冲突。例如按 F2 之后可能没有进入 htop 的设置界面,而是开始了对终端窗口的重命名。在这种情况下,你可能要更改一下快捷键的设置。

除了以上列出的快捷键以外,还有一些带有其它功能的快捷键,例如:

  • u 可以选择显示某个用户的进程。
  • Shift+m 可以按照内存使用量对进程列表排序。
  • Shift+p 可以按照 CPU 使用量对进程列表排序。
  • Shit+t 可以按照进程启动时间对进程列表排序。
  • CTRL+l 刷新界面。

htop 的所有功能都可以在启动后通过快捷键来调用,而不需要在启动的时候带上某个参数。当然,htop 也支持带参数启动。

例如按照以下方式启动 htop 就可以只显示某个用户的进程:

$ htop -u <username>

更改界面自动刷新的时间间隔:

$ htop -d 10

看,htop 确实比 top 好用多了。

想了解 htop 的更多细节,可以查阅它的手册页面:

$ man htop

也可以查看它的项目主页GitHub 仓库

Vtop

vtoptop 工具的另一个替代方案。它是一个使用 NodeJS 编写的、自由开源的命令行界面系统活动监视器,并使用 MIT 许可证发布。vtop 通过使用 unicode 中的盲文字符来绘制 CPU 和内存使用情况的可视化图表。

在安装 vtop 之前,需要先安装 NodeJS。如果还没有安装 NodeJS,可以按照这个教程进行安装。

NodeJS 安装完毕之后,执行以下命令安装 vtop

$ npm install -g vtop

安装好 vtop 就可以执行以下命令开始监控了。

$ vtop

显示界面如下:

如上图所示,vtop 界面和 tophtop 都有所不同,它将不同的内容分别以多个框的布局显示。另外在界面底部也展示了用于与 vtop 交互的所有快捷键。

vtop 有这些快捷键:

  • dd :杀死一个进程。
  • k:向上移动。
  • j:向下移动。
  • h :放大图表。
  • l:缩小图表。
  • g :跳转到进程列表顶部。
  • Shift+g :跳转到进程列表底部。
  • c :以 CPU 使用量对进程排序。
  • m :以内存使用量对进程排序。

想要了解更多关于 vtop 的细节,可以查阅它的项目主页或者 GitHub 仓库

Gtop

gtopvtop 一样,都是一个使用 NodeJS 编写、在 MIT 许可下发布的系统活动监视器。

执行以下命令安装 gtop

$ npm install gtop -g

然后执行以下命令启动:

$ gtop

显示界面如下:

gtop 有一个优点,就是它会以不同的颜色来显示不同的模块,这种表现形式非常清晰明了。

主要的快捷键包括:

  • p:按照进程 ID 对进程排序。
  • c:按照 CPU 使用量对进程排序。
  • m:按照内存使用量对进程排序。
  • qCtrl+c:退出。

想要了解更多关于 gtop 的细节,可以查阅它的 GitHub 仓库

Gotop

gotop 也是一个完全自由和开源的图表式系统活动监视器。顾名思义,它是在受到 gtopvtop 的启发之后用 Go 语言编写的,因此也不再对其展开过多的赘述了。如果你有兴趣了解这个项目,可以阅读《gotop:又一个图表式系统活动监视器》这篇文章。

Ptop

有些人对 NodeJS 和 Go 语言的项目可能不太感冒。如果你也是其中之一,你可以试一下使用 Python 编写的 ptop。它同样是一个自由开源的、在 MIT 许可下发布的系统活动监视器。

ptop 同时兼容 Python2.x 和 Python3.x,因此可以使用 Python 的软件包管理器 pip 轻松安装。如果你没有安装 pip,也可以参考这个教程进行安装。

安装 pip 之后,执行以下命令就可以安装 ptop

$ pip install ptop

又或者按照以下方式通过源代码安装:

$ git clone https://github.com/darxtrix/ptop
$ cd ptop/
$ pip install -r requirements.txt # install requirements
$ sudo python setup.py install

如果需要对 ptop 进行更新,可以这样操作:

$ pip install --upgrade ptop

即使你不执行更新,ptop 也会在第一次启动的时候提示你是否需要更新到最新的版本。

现在可以看一下启动 ptop 后的界面。

$ ptop

就像下面这样:

ptop 的快捷键包括以下这些:

  • Ctrl+k:杀死一个进程。
  • Ctrl+n:按照内存使用量对进程排序。
  • Ctrl+t:按照进程启动时间对进程排序。
  • Ctrl+r:重置所有数据。
  • Ctrl+f:对进程进行筛选,输入进程的名称就能够筛选出符合条件的进程。
  • Ctrl+l:查看所选进程的详细信息。
  • g:跳转到进程列表顶部。
  • Ctrl+q:退出。

ptop 还支持更改显示主题。如果你想让 ptop 更好看,可以选择你喜欢的主题。可用的主题包括以下这些:

  • colorful
  • elegant
  • simple
  • dark
  • light

如果需要更换主题(例如更换到 colorful 主题),可以执行以下命令:

$ ptop -t colorful

使用 -h 参数可以查看帮助页面:

$ ptop -h

想要了解更多关于 ptop 的细节,可以查阅它的 GitHub 仓库

Hegemon

hegemon 是一个使用 Rust 编写的系统活动监视器,如果你对 Rust 感兴趣,也可以了解一下。我们最近有一篇关于 hegemon文章,想要详细了解的读者不妨阅读。

总结

以上就是关于 top 工具的 6 个替代方案。我并不会说它们比 top 更好或者可以完全替代 top,但多了解一些类似的工具总是好的。你有使用过这些工具吗?哪个是你最喜欢的?欢迎在评论区留言。


via: https://www.ostechnix.com/some-alternatives-to-top-command-line-utility-you-might-want-to-know/

作者:SK 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出