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 中不同的颜色和统计信息表示什么让我们从 CPU 使用率栏开始，因为它使用的颜色最缤纷多彩。CPU 使用率栏绿色：用户进程消耗的资源。蓝色：表示低优先级线程。红色：系统（内核）进程使用的 CPU 资源。水蓝色：表示虚拟化进程。内存使用率栏绿色：系统进程正在使用的内存。蓝色：缓冲页面使用的内存。橙色：分配给缓存页面的内存。统计数据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，它将显示每个可用的选项来对正在进行的进程进行排序：你可以使用方向键选择一个首选的排序选项，然后按回车键，结果应该会如预期的那样反映出来。搜索特定进程如果你想查找一个特定的进程及其资源消耗，你可以按 F3，它会给你一个搜索提示，如下所示：例如，我搜索 htop，它用浅橙色高亮显示了进程。你可以按 F3 获得下一个结果。过滤正在运行的进程虽然搜索可能会让你获得预期的结果，但我发现使用关键字的过滤过程更加有效，因为它提供了一个过程列表。要过滤进程，你必须按 F4 并输入进程的名称。例如，我过滤了与 gnome-boxes 相关的进程：杀死进程一旦找到最耗资源和不必要的进程，你只需按 F9，它就会向你显示终止信号：我无法介绍所有的 15 个终止信号，我们有一个关于 不同终止信息 的单独指南，因此如果你想了解更多信息，可以参考该指南。但我会建议你首先使用 SIGTERM，因为它是终止进程的最有效和友好的方式。自定义 htop在这里，我的目标是添加日期和时间并将配色方案更改为单色。首先，按 F2，它会出现设置提示，允许用户更改 htop 的外观：首先，将鼠标悬停在各个 Colors 部分并按回车键，这将允许我们更改配色方案。从那里，选择 Monochromatic 选项并按回车键保存更改：现在，返回到设置选项，然后使用向左方向键探索可用的指标：因为我打算添加日期和时间，所以我必须在找到它的选项后按回车键。在这里，它允许你将日期和时间放置在左右两列中，你可以使用向上和向下的方向键更改列的顺序。所以我将日期和时间指标放在最后一个样式选项中（你可以使用空格键更改样式）：完成日期和时间指标的对齐后，按回车键保存更改，然后按 F10 关闭设置提示。总结在本指南中，我解释了如何在不同的 Linux 发行版中安装 htop 实用程序，以及如何使用 htop 的一些基本功能来有效的管理系统资源。但是 htop 可以做更多的事情，要了解更多信息，你可以随时参考它的手册页，我们有一个详细的指南，告诉你如何 在 Linux 中充分利用手册页。via: https://itsfoss.com/use-htop/作者：Sagar Sharma 选题：lkxed 译者：perfiffer 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
htop 是一个流行的命令行工具，可以帮助监测 Linux 上的系统资源和性能。它比通常默认开箱即用的 top 好。使用 htop，你可以对进程进行过滤和排序，以便更好地了解情况，获得正在运行的进程的树状视图，并在需要时杀死进程。我使用 htop 而不是其他系统监控工具，因为它可以显示对我来说至关重要的东西，并允许在我需要控制运行中的服务时终止流氓进程或冻结进程。但是，如果你想要其他显示更多信息，或一个看起来不同的东西，有哪些htop 替代品呢？让我们来看看。1、atopatop 可以提供所有运行的进程的细节。你可以得到你需要的所有数据，以了解你系统上的进程情况。它还提供了对资源利用率进行永久记录的能力，以便进行长期分析。系统管理员可能会发现这比其他工具更有用。不幸的是，它并没有为你提供漂亮的输出。因此，如果你想要的话，请继续看下面的其他替代品。如何安装 atop？对于基于 Ubuntu/Debian 的发行版，键入：sudo apt install atop 2、vtop如果你想要一个漂亮的输出和管理进程的基本功能，vtop 是一个完美的系统监控工具。正如我在其他一些文章中所说，它的输出看起来像终端中的 GUI。你可以使用鼠标，也可以选择禁用它。也可以定制它的主题。它是用 Node.js 构建的。所以，你需要安装额外的包来安装它。不幸的是，这个项目似乎不再积极维护。但是，在写这篇文章的时候，它对我来说还是有用的。如何安装 vtop？对于基于 Ubuntu 的发行版，在终端输入以下命令：sudo apt install nodejs sudo apt install npm sudo npm install -g vtop 3、btop++btop++ 是 bashtop 和 bpytop 的一个 C++ 版本。是的，它是这些项目的第三次迭代，由同一个开发者完成。btop++ 包括完全的鼠标支持，带有一个受游戏启发的菜单系统，可以让你过滤进程、树状视图等等。如何安装 btop++？使用官方软件库，你可以很容易地在 Fedora、openSUSE 和 FreeBSD 上安装它。对于 Fedora，你可以键入：sudo dnf install btop 你可以探索它的 GitHub 页面，了解在其他 Linux 发行版上的安装方式。4、GlancesGlances 与 htop 类似，但有更多的功能。它是一个跨平台的系统监控工具，可以将数据以 CSV 或其他格式导出，用于 InfluxDB、Elasticsearch 等。你也可以利用它的网页用户界面，远程（或在不能访问终端的情况下）查看统计数据。如何安装 Glances？对于基于 Ubuntu 的发行版，你可以键入：sudo apt install glances 5、nmonnmon 是一个令人印象深刻的监测工具，它可以让你控制你想显示的输出内容。你可以提取监测数据（以 CSV 格式导出）并用于进一步分析。它很容易切换统计数据和在不同的视图之间进行切换。默认情况下，它每两秒刷新一次数据，但你可以自定义它，并使用更多的选项来调整你的体验。如何安装 nmon？你可以在官方软件库中找到它。对于基于 Ubuntu 的发行版，在终端键入以下内容：sudo apt install nmon 总结top 2022top 命令工具被植入在你的 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：进程的 IDUSER：进程的归属者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：进程的 IDPPID：父进程的 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 Contentvia: 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.pid4) 如何在批处理模式下运行 top 命令并按照处理时间进行排序在批处理模式中使用以下 top 命令按照处理时间对结果进行排序。这展示了任务从启动以来已使用的总 CPU 时间。但是如果你想要检查一个进程在 Linux 上运行了多长时间请看接下来的文章：检查 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-journald5) 如何在批处理模式下运行 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+f 或 shift+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中国 荣誉推出
watch、top 和 ac 命令为我们监视 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 工具的替代方案：HtopVtopGtopGotopPtopHegemon如果后续有更多类似的工具，原作者会在原文进行更新。如果你对此有兴趣，可以持续关注。Htophtop 是一个流行的开源跨平台交互式进程管理器，也是我最喜欢的系统活动监控工具。htop 是对原版 top 工具的扩展。它最初只是用于 Linux 系统，后来开发者们不断为其添加对其它类 Unix 操作系统的支持，包括 FreeBSD 和 Mac OS。htop 还是一个自由开源软件，它基于 ncurses 并按照 GPLv2 发布。和原版的 top 工具相比，htop 工具有这些优势：htop 比 top 启动更快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 交互的快捷键：F1、h、?：进入帮助界面。F2、Shift+s：进入设置界面。在设置界面中可以配置仪表板界面顶部显示哪些数据，以及设置颜色方案、显示列、显示顺序等等多种参数。F3、/：在进程列表中进行搜索。F4、\：进入筛选模式。输入一个字符串，筛选出包含这个字符串的进程。进入筛选模式后再按一次 F4 或者 ESC 可以退出筛选模式。F5、t：切换默认显示模式和树型显示模式，在树型显示模式下按 + 可以查看子树。F6、<、>：依次按照进程 ID、用户、进程优先级、进程 nice 值、CPU 使用率、内存使用率排序显示。F7、]：提高所选进程的优先级。F8、[：降低所选进程的优先级。F9、k：杀死所选进程。可以用 ↑ / ↓ 键选择不同的进程并按 F9 杀死进程。F10、q： 退出 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 仓库。Vtopvtop 是 top 工具的另一个替代方案。它是一个使用 NodeJS 编写的、自由开源的命令行界面系统活动监视器，并使用 MIT 许可证发布。vtop 通过使用 unicode 中的盲文字符来绘制 CPU 和内存使用情况的可视化图表。在安装 vtop 之前，需要先安装 NodeJS。如果还没有安装 NodeJS，可以按照这个教程进行安装。NodeJS 安装完毕之后，执行以下命令安装 vtop：$ npm install -g vtop安装好 vtop 就可以执行以下命令开始监控了。$ vtop显示界面如下：如上图所示，vtop 界面和 top、htop 都有所不同，它将不同的内容分别以多个框的布局显示。另外在界面底部也展示了用于与 vtop 交互的所有快捷键。vtop 有这些快捷键：dd ：杀死一个进程。↑、k：向上移动。↓、j：向下移动。←、h ：放大图表。→、l：缩小图表。g ：跳转到进程列表顶部。Shift+g ：跳转到进程列表底部。c ：以 CPU 使用量对进程排序。m ：以内存使用量对进程排序。想要了解更多关于 vtop 的细节，可以查阅它的项目主页或者 GitHub 仓库。Gtopgtop 和 vtop 一样，都是一个使用 NodeJS 编写、在 MIT 许可下发布的系统活动监视器。执行以下命令安装 gtop：$ npm install gtop -g然后执行以下命令启动：$ gtop显示界面如下：gtop 有一个优点，就是它会以不同的颜色来显示不同的模块，这种表现形式非常清晰明了。主要的快捷键包括：p：按照进程 ID 对进程排序。c：按照 CPU 使用量对进程排序。m：按照内存使用量对进程排序。q、Ctrl+c：退出。想要了解更多关于 gtop 的细节，可以查阅它的 GitHub 仓库。Gotopgotop 也是一个完全自由和开源的图表式系统活动监视器。顾名思义，它是在受到 gtop 和 vtop 的启发之后用 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 更好看，可以选择你喜欢的主题。可用的主题包括以下这些：colorfulelegantsimpledarklight如果需要更换主题（例如更换到 colorful 主题），可以执行以下命令：$ ptop -t colorful使用 -h 参数可以查看帮助页面：$ ptop -h想要了解更多关于 ptop 的细节，可以查阅它的 GitHub 仓库。Hegemonhegemon 是一个使用 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中国 荣誉推出
在类 Unix 系统中监视运行进程时，最常用的程序是 top 和它的增强版 htop。我个人最喜欢的是 htop。但是，开发人员不时会发布这些程序的替代品。top 和 htop 工具的一个替代品是 Hegemon。它是使用 Rust 语言编写的模块化系统监视程序。关于 Hegemon 的功能，我们可以列出以下这些：Hegemon 会监控 CPU、内存和交换页的使用情况。它监控系统的温度和风扇速度。更新间隔时间可以调整。默认值为 3 秒。我们可以通过扩展数据流来展示更详细的图表和其他信息。单元测试。干净的界面。自由开源。安装 Hegemon确保已安装 Rust 1.26 或更高版本。要在 Linux 发行版中安装 Rust，请参阅以下指南：在 Linux 中安装 Rust 编程语言另外要安装 libsensors 库。它在大多数 Linux 发行版的默认仓库中都有。例如，你可以使用以下命令将其安装在基于 RPM 的系统（如 Fedora）中：$ sudo dnf install lm_sensors-devel在像 Ubuntu、Linux Mint 这样的基于 Debian 的系统上，可以使用这个命令安装它：$ sudo apt-get install libsensors4-dev在安装 Rust 和 libsensors 后，使用命令安装 Hegemon：$ cargo install hegemon安装 hegemon 后，使用以下命令开始监视 Linux 系统中正在运行的进程：$ hegemon以下是 Arch Linux 桌面的示例输出。要退出，请按 Q。请注意，hegemon 仍处于早期开发阶段，并不能完全取代 top 命令。它可能存在 bug 和功能缺失。如果你遇到任何 bug，请在项目的 GitHub 页面中报告它们。开发人员计划在即将推出的版本中引入更多功能。所以，请关注这个项目。就是这些了。希望这篇文章有用。还有更多的好东西。敬请关注！干杯!via: https://www.ostechnix.com/hegemon-a-modular-system-monitor-application-written-in-rust/作者：SK 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如果你使用过 top 命令来查看 Fedora 系统中的内存使用情况，你可能会惊讶，看起来消耗的数量比系统可用的内存更多。下面会详细介绍内存使用情况以及如何理解这些数据。内存实际使用情况操作系统对内存的使用方式并不是太通俗易懂。事实上，其背后有很多不为人知的巧妙技术在发挥着作用。通过这些方式，可以在无需用户干预的情况下，让操作系统更有效地使用内存。大多数应用程序都不是系统自带的，但每个应用程序都依赖于安装在系统中的库中的一些函数集。在 Fedora 中，RPM 包管理系统能够确保在安装应用程序时也会安装所依赖的库。当应用程序运行时，操作系统并不需要将它要用到的所有信息都加载到物理内存中。而是会为存放代码的存储空间构建一个映射，称为虚拟内存。操作系统只把需要的部分加载到内存中，当某一个部分不再需要后，这一部分内存就会被释放掉。这意味着应用程序可以映射大量的虚拟内存，而使用较少的系统物理内存。特殊情况下，映射的虚拟内存甚至可以比系统实际可用的物理内存更多！而且在操作系统中这种情况也并不少见。另外，不同的应用程序可能会对同一个库都有依赖。Fedora 中的 Linux 内核通常会在各个应用程序之间共享内存，而不需要为不同应用分别加载同一个库的多个副本。类似地，对于同一个应用程序的不同实例也是采用这种方式共享内存。如果不首先了解这些细节，top 命令显示的数据可能会让人摸不着头脑。下面就举例说明如何正确查看内存使用量。使用 top 命令查看内存使用量如果你还没有使用过 top 命令，可以打开终端直接执行查看。使用 Shift + M 可以按照内存使用量来进行排序。下图是在 Fedora Workstation 中执行的结果，在你的机器上显示的结果可能会略有不同：主要通过以下三列来查看内存使用情况：VIRT、RES 和 SHR。目前以 KB 为单位显示相关数值。VIRT 列代表该进程映射的 虚拟 virtual 内存。如上所述，虚拟内存不是实际消耗的物理内存。例如， GNOME Shell 进程 gnome-shell 实际上没有消耗超过 3.1 GB 的物理内存，但它对很多更低或更高级的库都有依赖，系统必须对每个库都进行映射，以确保在有需要时可以加载这些库。RES 列代表应用程序消耗了多少实际（ 驻留 resident ）内存。对于 GNOME Shell 大约是 180788 KB。例子中的系统拥有大约 7704 MB 的物理内存，因此内存使用率显示为 2.3％。但根据 SHR 列显示，其中至少有 88212 KB 是 共享 shared 内存，这部分内存可能是其它应用程序也在使用的库函数。这意味着 GNOME Shell 本身大约有 92 MB 内存不与其他进程共享。需要注意的是，上述例子中的其它程序也共享了很多内存。在某些应用程序中，共享内存在内存使用量中会占很大的比例。值得一提的是，有时进程之间通过内存通信，这些内存也是共享的，但 top 这样的工具却不一定能检测到，所以以上的说明也不一定准确。关于交换分区系统还可以通过交换分区来存储数据（例如硬盘），但读写的速度相对较慢。当物理内存渐渐用满，操作系统就会查找内存中暂时不会使用的部分，将其写出到交换区域等待需要的时候使用。因此，如果交换内存的使用量一直偏高，表明系统的物理内存已经供不应求了。有时候一个不正常的应用也有可能导致出现这种情况，但如果这种现象经常出现，就需要考虑提升物理内存或者限制某些程序的运行了。感谢 Stig Nygaard 在 Flickr 上提供的图片（CC BY 2.0）。via: https://fedoramagazine.org/understand-fedora-memory-usage-top/作者：Paul W. Frields 选题：lujun9972 译者：HankChow 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
通过这篇教程提升你的 top 命令的知识。尝试找出你的机器正在运行什么程序，以及哪个进程耗尽了内存导致系统非常非常慢 —— 这是 top 命令所能胜任的工作。top 是一个非常有用的程序，其作用类似于 Windows 任务管理器或 MacOS 的活动监视器。在 *nix 机器上运行 top 将实时显示系统上运行的进程的情况。$ top取决于你运行的 top 版本，你会看到类似如下内容：top - 08:31:32 up 1 day, 4:09, 0 users, load average: 0.20, 0.12, 0.10 Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.5 us, 0.3 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 4042284 total, 2523744 used, 1518540 free, 263776 buffers KiB Swap: 1048572 total, 0 used, 1048572 free. 1804264 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 21964 3632 3124 S 0.0 0.1 0:00.23 bash 193 root 20 0 123520 29636 8640 S 0.0 0.7 0:00.58 flask 195 root 20 0 23608 2724 2400 R 0.0 0.1 0:00.21 top你所用的 top 版本可能跟这个看起来不一样，特别是在显示的列上。如何阅读输出的内容你可以根据输出判断你正在运行的内容，但尝试去解释结果你可能会有些困惑。前几行包含一堆统计信息（详细信息），后跟一个包含结果列的表（列）。让我们从后者开始吧。列这些是系统正在运行的进程。默认按 CPU 使用率降序排序。这意味着在列表顶部的程序正使用更多的 CPU 资源并对你的系统造成更重的负担。对于资源使用而言，这些程序是字面上的消耗资源最多的（top）进程。不得不说，top 这个名字起得很妙。最右边的 COMMAND 一列报告进程名（启动它们的命令）。在这个例子里，进程名是 bash（一个我们正在运行 top 的命令解释器）、flask（一个 Python 写的 web 框架）和 top 自身。其它列提供了关于进程的有用信息：PID：进程 ID，一个用来定位进程的唯一标识符USER：运行进程的用户PR：任务的优先级NI：Nice 值，优先级的一个更好的表现形式VIRT：虚拟内存的大小，单位是 KiB（kibibytes）RES：常驻内存大小，单位是 KiB（物理内存和虚拟内存的一部分）SHR：共享内存大小，单位是 KiB（共享内存和虚拟内存的一部分）S：进程状态，一般 I 代表空闲，R 代表运行，S 代表休眠，Z 代表僵尸进程，T 或 t 代表停止（还有其它更少见的选项）%CPU：自从上次屏幕更新后的 CPU 使用率%MEM：自从上次屏幕更新后的 RES 常驻内存使用率TIME+：自从程序启动后总的 CPU 使用时间COMMAND：启动命令，如之前描述那样确切知道 VIRT，RES 和 SHR 值代表什么在日常操作中并不重要。重要的是要知道 VIRT 值最高的进程就是内存使用最多的进程。当你在用 top 排查为什么你的电脑运行无比卡的时候，那个 VIRT 数值最大的进程就是元凶。如果你想要知道共享内存和物理内存的确切意思，请查阅 top 手册的 Linux Memory Types 段落。是的，我说的是 kibibytes 而不是 kilobytes。通常称为 kilobyte 的 1024 值实际上是 kibibyte。希腊语的 kilo（χίλιοι）意思是一千（例如一千米是 1000 米，一千克是 1000 克）。Kibi 是 kilo 和 binary 的合成词，意思是 1024 字节（或者 2 10 ）。但是，因为这个词很难说，所以很多人在说 1024 字节的时候会说 kilobyte。top 试图在这里使用恰当的术语，所以按它说的理解就好。屏幕更新说明实时屏幕更新是 Linux 程序可以做的 非常酷 的事之一。这意味着程序能实时更新它们显示的内容，所以看起来是动态的，即使它们用的是文本。非常酷！在我们的例子中，更新时间间隔很重要，因为一些统计数据（%CPU 和 %MEM）是基于上次屏幕更新的数值的。因为我们运行在一个持久性的程序中，我们就可以输入一些命令来实时修改配置（而不是停止应用，然后用一个不同的命令行选项再次运行）。按下 h 调用帮助界面，该界面也显示了默认延迟（屏幕更新的时间间隔）。这个值默认（大约）是 3 秒，但你可以输入 d（大概是 delay 的意思）或者 s（可能是 screen 或 seconds 的意思）来修改它。细节在进程列表上面有一大堆有用的信息。有些细节看起来有点儿奇怪，让人困惑。但是一旦你花点儿时间来逐个过一遍，你会发现，在紧要关头，这些是非常有用的。第一行包含系统的大致信息：top：我们正在运行 top！你好！top！XX:YY:XX：当前时间，每次屏幕更新的时候更新up（接下去是 X day, YY:ZZ）：系统的 uptime，或者自从系统启动后已经过去了多长时间load average（后跟三个数字）：分别是过去一分钟、五分钟、15 分钟的系统负载)第二行（Task）显示了正在运行的任务的信息，不用解释。它显示了进程总数和正在运行的、休眠中的、停止的进程数和僵尸进程数。这实际上是上述 S（状态）列的总和。第三行（%Cpu(s)）显示了按类型划分的 CPU 使用情况。数据是屏幕刷新之间的值。这些值是：us：用户进程sy：系统进程ni：nice#Etymology) 用户进程id：CPU 的空闲时间，这个值比较高时说明系统比较空闲wa：等待时间，或者消耗在等待 I/O 完成的时间hi：消耗在硬件中断的时间si：消耗在软件中断的时间st：“虚拟机管理程序从该虚拟机窃取的时间”你可以通过点击 t（toggle）来展开或折叠 Task 和 %Cpu(s) 行。第四行（Kib Mem）和第五行（KiB Swap）提供了内存和交换空间的信息。这些数值是：总内存容量已用内存空闲内存内存的缓冲值交换空间的缓存值默认它们是用 KiB 为单位展示的，但是按下 E（扩展内存缩放 extend memory scaling）可以轮换不同的单位：KiB、MiB、GiB、TiB、PiB、EiB（kilobytes、megabytes、gigabytes、terabytes、petabytes 和 exabytes）top 用户手册有更多选项和配置项信息。你可以运行 man top 来查看你系统上的文档。还有很多 HTML 版的 man 手册，但是请留意，这些手册可能是针对不同 top 版本的。两个 top 的替代品你不必总是用 top 查看系统状态。你可以根据你的情况用其它工具来协助排查问题，尤其是当你想要更图形化或更专业的界面的时候。htophtop 很像 top，但是它带来了一些非常有用的东西：它可以以图形界面展示 CPU 和内存使用情况。这是我们在刚才运行 top 的同一环境中 htop 的样子。显示更简洁，但功能却很丰富。任务统计、负载、uptime 和进程列表仍然在，但是它有了漂亮、彩色、动态的每核 CPU 使用情况，还有图形化的内存使用情况。以下是不同颜色的含义（你也可以通过按下 h 来获得这些信息的帮助）。CPU 任务优先级或类型：蓝色：低优先级绿色：正常优先级红色：内核任务蓝色：虚拟任务条状图末尾的值是已用 CPU 的百分比内存：绿色：已经使用的内存蓝色：缓冲的内存黄色：缓存内存条状图末尾的值显示已用内存和总内存如果颜色对你没用，你可以运行 htop -C 来禁用它们；那样 htop 将使用不同的符号来展示 CPU 和内存类型。它的底部有一组激活的快捷键提示，可以用来操作过滤结果或改变排序顺序。试着按一些快捷键看看它们能做什么。不过尝试 F9 时要小心，它会调出一个信号列表，这些信号会杀死（即停止）一个过程。我建议在生产环境之外探索这些选项。htop 的作者 Hisham Muhammad（是的，htop 的名字就是源自 Hisham 的）在二月份的 FOSDEM 2018 做了一个简短的演讲。他阐述了 htop 不仅有简洁的图形界面，还有更现代的进程信息统计展示方式，这都是之前的工具（如 top）所不具备的。你可以在手册页面或 htop 网站阅读更多关于 htop 的信息。（提示：网站背景是一个动态的 htop。）docker stats如果你在用 Docker，你可以运行 docker stats 来为容器状态生成一个有丰富上下文的界面。这可能比 top 更有帮助，因为它不是按进程分类，而是按容器分类的。这点特别有用，当某个容器运行缓慢时，查看哪个容器耗资源最多比运行 top 再找到容器的进程要快。借助于上面对 top 和 htop 术语的解释，你应该会更容易理解 docker stats 中的那些。然而，docker stats 文档对每一列都提供了详尽的描述。via: https://opensource.com/article/18/8/top-tips-speed-up-computer作者：Katie McLaughlin 选题：lujun9972 译者：ypingcn 校对：pityonline本文由 LCTT 原创编译，Linux中国 荣誉推出
你已经知道 top 命令，对么？是的，它提供类 Unix 操作系统中运行中的进程的动态实时信息。一些开发人员为 top 命令构建了图形前端，因此用户可以在图形窗口中轻松找到他们系统的活动。其中之一是 Gotop。顾名思义，Gotop 是一个 TUI 图形活动监视器，使用 Go 语言编写。它是完全免费、开源的，受到了 gtop 和 vtop 的启发。在此简要的指南中，我们将讨论如何安装和使用 Gotop 来监视 Linux 系统的活动。安装 GotopGotop 是用 Go 编写的，所以我们需要先安装它。要在 Linux 中安装 Go 语言，请参阅以下指南。安装 Go 之后，使用以下命令下载最新的 Gotop 二进制文件。$ sh -c "$(curl https://raw.githubusercontent.com/cjbassi/gotop/master/download.sh)" 然后，将下载的二进制文件移动到您的 $PATH 中，例如 /usr/local/bin/。$ cp gotop /usr/local/bin 最后，用下面的命令使其可执行：$ chmod +x /usr/local/bin/gotop 如果你使用的是基于 Arch 的系统，Gotop 存在于 AUR 中，所以你可以使用任何 AUR 助手程序进行安装。使用 Cower：$ cower -S gotop 使用 Pacaur：$ pacaur -S gotop 使用 Packer：$ packer -S gotop 使用 Trizen：$ trizen -S gotop 使用 Yay：$ yay -S gotop 使用 yaourt：$ yaourt -S gotop 用法Gotop 的使用非常简单！你所要做的就是从终端运行以下命令。$ gotop 这样就行了！你将在简单的 TUI 窗口中看到系统 CPU、磁盘、内存、网络、CPU温度和进程列表的使用情况。要仅显示CPU、内存和进程组件，请使用下面的 -m 标志：$ gotop -m 你可以使用以下键盘快捷键对进程表进行排序。c – CPUm – 内存p – PID对于进程浏览，请使用以下键。上/下 箭头或者 j/k 键用于上移下移。Ctrl-d 和 Ctrl-u – 上移和下移半页。Ctrl-f 和 Ctrl-b – 上移和下移整页。gg 和 G – 跳转顶部和底部。按下 TAB 切换进程分组。要杀死选定的进程或进程组，请输入 dd。要选择一个进程，只需点击它。要向下/向上滚动，请使用鼠标滚动按钮。要放大和缩小 CPU 和内存的图形，请使用 h 和 l。要显示帮助菜单，只需按 ?。就是这些了。希望这有帮助。还有更多好东西。敬请关注！资源Gotop GitHub Repositoryvia: https://www.ostechnix.com/gotop-yet-another-tui-graphical-activity-monitor-written-in-go/作者：SK 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出