28

我试过管道htop到一个文本文件(例如htop > text.txt),但它给我的文本因格式化字符串而乱码(见下文)。有没有办法获得更好的、人类可读的输出?

^[7^[[?47h^[[1;30r^[[m^[[4l^[[?1h^[=^[[m^[[?1000h^[[m^[[m^[[H^[[2J^[[1B  ^[[36m1  ^[[m^[[1m[^[[m^[[32m||||||||||^[[31m||||||||||^[[30m^[[1m                                                            \
     22.2%^[[m]^[[m     ^[[36mTasks: ^[[1m159^[[m^[[36m total, ^[[32m^[[1m5^[[m^[[36m running^[[3;3H2  ^[[m^[[1m[^[[30m                                                                                \
      0.0%^[[m]^[[m     ^[[36mLoad average: ^[[30m^[[1m1.11 ^[[m^[[m1.28 ^[[1m1.31 ^[[4;3H^[[m^[[36m3  ^[[m^[[1m[^[[m^[[32m||||||||||^[[30m^[[1m                                                       \
                    11.1%^[[m]^[[m     ^[[36mUptime: ^[[1m9 days, 22:04:51^[[5;3H^[[m^[[36m4  ^[[m^[[1m[^[[30m                                                                                      0.0\
%^[[m]^[[6;3H^[[m^[[36m5  ^[[m^[[1m[^[[m^[[31m||||||||||^[[30m^[[1m                                                                           11.1%^[[m]^[[7;3H^[[m^[[36m6  ^[[m^[[1m[^[[30m           \
4

8 回答 8

62

htop 作者在这里。

不,没有“好”的方法可以将 htop 的输出通过管道传输到文件中。它是一个交互式应用程序,并使用终端重绘例程来生成其界面(因此,将其管道化与将 vim 管道化到文本文件一样有意义——您将获得类似的结果)。

要以文本格式获取有关您的进程的信息,请使用“ps”。例如,ps auxf > file.txt为您提供许多易于解析的信息(或者ps aux如果您不希望树格式 - 请参阅man ps更多选项)。

于 2013-07-09T15:15:24.280 回答
23

htop 输出ANSI 转义码以使用颜色并在终端周围移动光标。有一个很棒的命令行程序aha可用于将 ANSI 转换为 HTML。

Ubuntu/Debian 安装

apt-get install aha

将 htop 输出保存为 HTML 文件

echo q | htop | aha --black --line-fix > htop.html
于 2015-05-13T20:07:44.647 回答
14

我有同样的需求,最终使用top而不是htop通过-b标志提供批处理模式。

-b:批处理模式操作以“批处理模式”启动top,这对于将输出从top发送到其他程序或文件可能很有用。在这种模式下,top 将不接受输入并运行,直到您使用 '-n' 命令行选项设置的迭代限制或直到被杀死。

例如:

top -b -n 1

希望这会有所帮助,即使这没有使用htop.

于 2015-01-26T13:59:57.567 回答
8

此命令输出纯文本。(它需要安装ahahtml2text。)

echo q | htop -C | aha --line-fix | html2text -width 999 | 
grep -v "F1Help\|xml version=" > file.txt
于 2017-09-03T14:37:45.807 回答
1

先安装recode,然后编码成utf-8:

$htop | recode utf-8 > test.txt

然后 cat 文件,你应该很好。

于 2014-02-06T20:30:03.513 回答
1

您还可以在运行 htop 之前使用脚本,以将时间重定向到文件以供以后播放。在“另一种解决方法”和“适合展示和讲述”的领域。

script -t -a /var/tmp/script.htop.out 2> /var/tmp/script.htop.out.timings
htop 

然后播放

scriptreplay /var/tmp/script.htop.out.timings /var/tmp/script.htop.out
于 2015-10-25T19:40:37.073 回答
0

根据前面的答案,我建议使用 python 做一些后处理。代码如下:

首先,我们从 htop 获取文本:

echo q | htop -C > a.txt

然后,我们使用 python 使其易于阅读:

import re
htop = open("a.txt").read()
print(re.sub(r'\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])', "", re.sub(r"\x1b\[\d\d;\dH|\x1b\[\d;3H", "\n", '\n'.join(htop)))[9:])

结果如下:

1  [                          0.0%]   Tasks: 11, 38 thr; 1 running
2  [                          0.0%]   Load average: 0.38 0.26 0.11 
3  [                          0.0%]   Uptime: 01:19:50
4  [                          0.0%]
Mem[|#****              700M/25.5G]
Swp[                         0K/0K]
    PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command        
     51 root       20   0  359M 62880 33428 S  0.0  0.2  0:00.00 /tools/node/bin
52 root20   0  359M 62880 33428 S  0.0  0.2  0:00.21 /tools/node/bin
53 root20   0  359M 62880 33428 S  0.0  0.2  0:00.19 /tools/node/bin
54 root20   0  359M 62880 33428 S  0.0  0.2  0:00.16 /tools/node/bin
55 root20   0  359M 62880 33428 S  0.0  0.2  0:00.15 /tools/node/bin
56 root20   0  359M 62880 33428 S  0.0  0.2  0:00.00 /tools/node/bin
57 root20   0  359M 62880 33428 S  0.0  0.2  0:00.05 /tools/node/bin
58 root20   0  359M 62880 33428 S  0.0  0.2  0:00.04 /tools/node/bin
59 root20   0  359M 62880 33428 S  0.0  0.2  0:00.05 /tools/node/bin
60 root20   0  359M 62880 33428 S  0.0  0.2  0:00.04 /tools/node/bin
1 root20   0  359M 62880 33428 S  0.0  0.2  0:08.76 /tools/node/bin
16 root20   0 35892  4768  3660 S  0.0  0.0  0:00.62 tail -n +0 -F /
75 root20   0  190M 61096 13512 S  0.0  0.2  0:00.00 /usr/bin/python
76 root20   0  190M 61096 13512 S  0.0  0.2  0:00.56 /usr/bin/python
F1Help  F2Setup F3SearchF4FilterF5Tree  F6SortByF7Nice -F8Nice +F9Kill  F10Quit
于 2021-08-08T03:26:19.377 回答
-2

这听起来可能很无聊,但是,如果您有多个显示器,则可以在“记录我的桌面”捕获该区域时运行 htop。它更像是一个视频,可能对搜索和排序没有帮助,但它看起来很漂亮。

于 2015-02-12T02:13:19.557 回答