设置 TOPCOLORS 环境变量

Cap*_*ton 5 top environment-variables

我似乎无法在 Internet 上找到此环境变量的任何示例,该变量top显然会读取并用于显示颜色。

我将如何正确设置此变量以便top在其输出中使用替代颜色?

我有 Solaris top3.5beta9 版。

Læt*_*æti 7

此中的 TOPCOLORS 变量top(也称为unixtop)在您使用的版本中不可用。它首次出现在此实用程序的 3.6 版中,如自述文件的颜色部分所述。出于某种原因,通常的 BSD 似乎不包括 top 的更新版本(FreeBSD 9.1 有 3.5beta12)。

如果您可以安装或编译更新的版本,手册页应该为您提供有关如何设置颜色的更多信息。在 3.8beta1 版本中,这就是它打印的内容:


颜色

指定要使用的颜色和应使用它们的条件。目前,只有摘要显示区域中的数字可以着色。在未来的版本中,还可以在过程显示区域中突出显示数字。环境变量是指定颜色的唯一方法:没有等效的命令行选项。注意环境变量TOPCOLOURS也是可以理解的。英式拼写优先。颜色的使用仅适用于理解和处理 ANSI 颜色转义序列的终端。

环境变量是一系列颜色规范,以冒号分隔。每个规范采取的形式tag=min,max#code,其中

  • tag 是要检查的值的名称,
  • minmax指定值的范围,以及
  • code 是 ANSI 颜色代码。

可以列出多个颜色代码并用分号分隔。缺失min意味着可能的最低值(通常为 0),缺失max意味着无穷大。逗号必须始终存在。

当指定平均负载的数字时,它们应该乘以 100。例如,规范:

  • 1min=500,1000#31 表示 5 到 10 之间的 1 分钟平均负载应显示为红色。

颜色属性可以组合。例如,规范:

  • 5min=1000,#37;41 表示高于 10 的 5 分钟平均负载应显示为红色背景上的白色字符。

一个名为的特殊标签 header用于控制过程显示标题的颜色。应指定没有下限和上限,特别是header=,#后跟 ANSI 颜色代码。

您可以使用该-T选项查看此顶部安装识别的颜色代码列表。这还将显示用于颜色高亮的当前测试集,如环境中所指定。


(手册页摘录结束)

颜色代码

color.h从源代码文件列表中的程序理解标记和代码。标签是:

/*
 * These color tag names are currently in use
 * (or reserved for future use):
 *
 * cpu, size, res, time, 1min, 5min, 15min, host
 */
Run Code Online (Sandbox Code Playgroud)

颜色是ANSI颜色:

/*
 * Valid ANSI values for colors are:
 *
 * 0    Reset all attributes
 * 1    Bright
 * 2    Dim
 * 4    Underscore  
 * 5    Blink
 * 7    Reverse
 * 8    Hidden
 * 
 *  Foreground Colours
 * 30   Black
 * 31   Red
 * 32   Green
 * 33   Yellow
 * 34   Blue
 * 35   Magenta
 * 36   Cyan
 * 37   White
 * 
 *  Background Colours
 * 40   Black
 * 41   Red
 * 42   Green
 * 43   Yellow
 * 44   Blue
 * 45   Magenta
 * 46   Cyan
 * 47   White
 */
Run Code Online (Sandbox Code Playgroud)

例子

使用以下设置,您可以了解可能性(此处为在 FreeBSD 上编译的顶级 3.8beta1):

export TOPCOLORS="header=,#1\
:1min=,399#32:1min=400,799#33:1min=800,#31\
:5min=,299#32:5min=300,599#33:5min=600,#31\
:15min=,199#32:15min=200,399#33:15min=400,#31\
:cpu.user=,9#32:cpu.user=10,49#33:cpu.user=50,#31\
:cpu.system=,9#32:cpu.system=10,49#33:cpu.system=50,#31\
:cpu.interrupt=,9#32:cpu.interrupt=10,49#33:cpu.interrupt=50,#31"
Run Code Online (Sandbox Code Playgroud)

调用 totop -T将直接显示 top 是否理解您声明的颜色设置。它还将列出所有理解的标签(在我的情况下与color.h文件内容有些不同)。

备择方案

在不同的 UNIX 系统上,使用了替代方法。在 Linux 下,您通常会发现该top实用程序来自procps包。您还可以安装htop,这是一个很好的多彩替代方案,它也可用于OSX和 FreeBSD(它依赖于 Linux 层),但 AFAIK 不在 Solaris 上。