进一步阅读

进一步阅读

对于 Ubuntu Bionic,是否有一个工具可以像 一样top显示进程上的各种数据并自动刷新,但可以从命令行配置以指定要显示哪些数据(列)?

答案1

procps top,Ubuntu 上的那个可能是最可配置的top实现。

要更改字段列表,请按f,您可以添加、删除字段、更改其顺序等。

您可以在那里更改更多内容,包括颜色、布局、多窗格视图、顶部标题......

您可以通过按 来保存这些配置W

这将去~/.toprc(或~/.config/procps/toprc在较新的版本中)。

您可以通过top使用不同的名称进行呼叫,将它们保存为不同的配置文件。例如,如果您mytoptop可执行文件创建符号链接,并调用它,或者运行top(exec -a mytop top),那么W会将配置保存到~/.mytoprc,这样您就可以通过这种方式定义各种不同风格的版本top

答案2

这是一个两难的境地,不是吗?

  • top具有自动刷新功能,但无法指定要显示的列。
  • ps其同类可以被告知要输出哪些列,但不不断更新。

我是自己解决这个问题的一部分。

我已经有一个工具,可以通过管道获取表输入的数据,并以可滚动的柱状格式在终端上全屏显示它。这是console-flat-table-viewer来自 nosh 工具集的命令。在其标准输入上每隔一定时间向其提供一系列表,这些表由相关的分隔符分隔文件分隔符字符,并且它将提供不断更新的显示。

请注意,这不是喜欢watchwatch接受任何旧的输入。 console-flat-table-viewer期望其输入是一张桌子,这是在 Unices 和 Linux 操作系统上找到的几种众所周知的平面文件编码之一,其用户界面呈现了它作为一张桌子,按行和列对齐,并带有标题和光标。

该机制的另一部分是一个工具,它首先以平面文件形式发出进程表,每隔一段时间重复一次,将其输出散布在文件分隔符。我们几乎,但还没有完全做到这一点。

top人们可以以“批处理”模式向其提供命令的输出:

而 top -b 全部 | sed -e '1,8s/^/#/' -e $'1i\\n\\f'
    睡觉 1
完成 |
控制台平面表查看器--标题计数 1

将输出中实际上不是进程表sed的部分变成注释,否则会混淆表布局,并添加到top文件分隔符。在与输出内容匹配的表编码中topconsole-flat-table-viewer手册中称之为space格式,文件分隔符是 ␌ 字符,必须对其进行转义才能sed不删除它。 (ASCII 有一个真正的 ␜ 字符,它console-flat-table-viewer可以理解ascii表。但这不是输出的编码top。)

我添加 ␌ 字符以sed减少显示闪烁,这样console-flat-table-viewer直到紧邻表的其余数据之前才收到它。另一种方法console-flat-table-viewer是简单地首先调用,因为 ␌ 和表格数据之间有一个时间间隔(在此期间显示空白表格),所以闪烁会稍微多一些printf

同样,生成输出的命令进入while循环的条件,因此当我退出时损坏的管道console-flat-table-viewer会导致循环正常终止。

但这不能提供对列的控制。

或者可以将 FreeBSD 命令的输出提供给它procstat

而 printf '\f' ; procstat -a
    睡觉 1
完成 |
控制台平面表查看器--标题计数 1

这对具有各种选项的列的控制程度有限,但不是细粒度的控制。它还存在一些问题,因为它的几个选项导致它通过在字段中间发出未转义的空白来破坏表格格式。

可以使用 BSDps命令:

而 ps -a -x -o "pid,ppid,用户,日志名,时间,状态,wchan,启动,comm" | sed -e $'1i\\n\\f'
    睡觉 1
完成 |
控制台平面表查看器--标题计数 1

Ubuntu Linux 上的GNU 许可ps命令具有不同的命令行语法,它本身就是几个问题和答案,但人们可以同样使用它。

虽然这对列进行细粒度控制,它再次无法正确转义字段内的空格。

自 20 世纪 90 年代的 4.4BSD 以来,BSD 就有了处理这个问题的方法。它是vis()各种 BSD 平面表(例如/etc/fstab)已经采用的编码系统。 console-flat-table-viewer也已经知道如何解码它。非常欢迎psprocstat,最好是两者都能够vis对其输出进行编码。

对于 GUI 用户来说,明显的下一步是拥有一个(当前假设的)实用程序来替代console-flat-table-viewer,采用相同的输入并使管道的输入侧保持相同,并使用 GUI 而不是 TUI 显示不断更新的表。

然后我们就可以拥有一个由可组合工具和管道连接在一起组成的灵活机制。 ☺

进一步阅读

相关内容