htop 输出到人类可读文件

     2023-04-14     74

关键词:

【中文标题】htop 输出到人类可读文件【英文标题】:htop output to human readable file 【发布时间】:2013-07-06 06:07:02 【问题描述】:

我尝试将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           \

【问题讨论】:

【参考方案1】:

htop 作者在这里。

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

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

【讨论】:

感谢您的回复。我特别想找到每个处理器的使用情况——htop 做得很好。有没有办法通过ps 访问它? thanx,但是人会导出到某个文件以使东西更有用 +1 Hi Hisham,htop 没有开关 -b :),我想以这种方式使用它来输出没有菜单行:htop -b |啊哈——黑色 htop 显示内核中 CPU 核心支出的大致百分比(例如红色)。这是ps无法提供的。因此,最好将 htop 转储到文件中。【参考方案2】:

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

Ubuntu/Debian 安装

apt-get install aha

将 htop 输出保存为 HTML 文件

echo q | htop | aha --black --line-fix > htop.html

【讨论】:

有关使用 ansi2html.sh 的示例,请参阅news.ycombinator.com/item?id=10323333 并链接有一个功能请求,以向 htop 添加 -b 选项以简化批处理 为什么我们一开始就需要echo q?尝试不这样做,并在文件末尾获得额外的文本。更新:退出htop 对吗?【参考方案3】:

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

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

例如:

top -b -n 1

希望这会有所帮助,即使这不是使用htop

【讨论】:

【参考方案4】:

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

echo q | htop -C | aha --line-fix | html2text -width 999 | 
grep -v "F1Help\|xml version=" > file.txt

【讨论】:

这和***.com/a/30224271/230468有什么不同? @DilithiumMatrix 这会给你带来干净的文本,没有任何 html 标签。 @DilithiumMatrix 忘记添加输出命令。马上编辑。你试过了吗?这是你需要的吗? :)【参考方案5】:

您还可以在运行 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

【讨论】:

【参考方案6】:

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

$htop | recode utf-8 > test.txt

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

【讨论】:

可能是一种很好的解决方法,但是当我尝试它时,它无法获取所有进程列表,并且总是只显示一个子集,而不是获取信息的可靠方法。跨度> 【参考方案7】:

根据前面的回答,我建议使用 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

【讨论】:

【参考方案8】:

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

【讨论】:

如何使用 Mahout 成功运行 kmeans 集群(尤其是获得人类可读的输出)

...如何使用Mahout成功运行kmeans集群(尤其是获得人类可读的输出)【英文标题】:HowtosuccessfullyrunkmeansclusteringusingMahout(esp.gethuman-readableoutput)【发布时间】:2012-06-2501:23:25【问题描述】:我尝试按照许多在线教程来运行Mahout中的kmean... 查看详情

Python库从字节计算人类可读文件大小?

...描述】:我发现hurry.filesize非常有用,但它不提供十进制输出?例如:printsize(4026,system=alternative)gives3KB.但后来当我添加所有值时,我没有得到确切的总和。 查看详情

Terraform 在自动化中计划人类可读的输出

】Terraform在自动化中计划人类可读的输出【英文标题】:Terraformplanhumanreadableoutputinautomation【发布时间】:2020-03-0413:04:01【问题描述】:我已经通过github/jenkins设置了一个自动化,以通过jenkins发布terraformplan的repo输出,作为对githu... 查看详情

java示例代码_REST服务:如何使用XML+XSLT生成人类可读的输出

java示例代码_REST服务:如何使用XML+XSLT生成人类可读的输出 查看详情

php人类可读文件大小(代码片段)

查看详情

千字节到人类可读。寻找一个班轮

】千字节到人类可读。寻找一个班轮【英文标题】:kilobytestohumanreadable.Lookingforoneliner【发布时间】:2011-12-1218:21:10【问题描述】:我经常在没有du的-h标志的unix机器上工作。我正在寻找一种将KB转换为人类可读的单行器。Perl似乎... 查看详情

php人类可读的文件大小(代码片段)

查看详情

从日志文件创建人类可读的 SQL

】从日志文件创建人类可读的SQL【英文标题】:CreatehumanreadableSQLfromLogfiles【发布时间】:2011-10-2114:31:31【问题描述】:我的日志文件包含以下格式的SQL语句:execsp_executeSQL@stmt=N\'SELECTField1,Field2,Field3FROMMyTableWHEREField1=@P1ANDField2=@P2\... 查看详情

python人类可读的大数字[重复]

...类可读性187,280,840,422,780美元已编辑:例如,我希望将其输出为187万亿,而不仅仅是逗号分隔。所以我希望产量达到数万亿、数百万、数十亿等【问题讨论】:安装clisp并写下这个: 查看详情

秒到人类可读时间

Takesa#ofsecondsandconvertsittohumanreadableformat.Ifhappenedwithinseconds-years.$time=time()-$time; $points=array('year'=>31556926,'month'=>2629743,'week'=>604800,'day'=>86400,'hour'=>3600,'minute'=>60,'second'=>1); foreach($pointsas$point=>$val... 查看详情

Bash:以人类可读格式将 unix 时间四舍五入到最接近的分钟

】Bash:以人类可读格式将unix时间四舍五入到最接近的分钟【英文标题】:Bash:Roundingupunixtimetothenearestminuteinhumanreadableformat【发布时间】:2017-05-0617:40:33【问题描述】:我有一个纪元时间戳列表,如下所示:1481842799,1481842859,........ 查看详情

将人类可读的文件大小转换为 ruby​​ 中的字节

】将人类可读的文件大小转换为ruby​​中的字节【英文标题】:Converthumanreadablefilesizetobytesinruby【发布时间】:2018-09-1009:55:48【问题描述】:我经历了这个link。我的要求与此完全相反。示例10KB的字符串需要转换为10240(其等效... 查看详情

如何以人类可读的格式显示 BigDecimal 值?

...它的创建方式:BigDecimalnum=newBigDecimal(6.0053);所以我们将在输出后看到以下“漂亮”值:System.out.p 查看详情

将日期从人类可读格式转换为纪元失败

】将日期从人类可读格式转换为纪元失败【英文标题】:Conversionofdatefromhuman-readableformattoepochfails【发布时间】:2021-11-1104:36:55【问题描述】:我想创建一个程序,将特定人类可读格式的日期转换为纪元。到目前为止,我有以下... 查看详情

将带有单位的数字转换为非人类可读格式

...me(["211.301MB","435.5GB","345.234Bytes"])例如以字节为单位的预期输出:211.301*1024*1024= 查看详情

linux命令htop&重定向top(代码片段)

...服务器断开也能运行:nohuppythontest.py>test.out&这里把输出在控制台的结果重定向到了test.out这个文件中,即可以在test.out中查看输出结果了。3.cat命令:文本输出命令,通常是用于观看某个文件的内容 查看详情

如何使用 ruby​​ on rails 生成人类可读的时间范围

...:2011-05-0709:07:53【问题描述】:我正在尝试找到生成以下输出的最佳方法<name>jobtook30seconds<name>jobtook1minuteand20seconds<name>jobt 查看详情

如何以人类可读的方式格式化 CouchDB 设计文档?

】如何以人类可读的方式格式化CouchDB设计文档?【英文标题】:HowdoIformatCouchDBdesigndocumentsinahumanreadableway?【发布时间】:2013-09-0216:57:20【问题描述】:由于views是用JSON在CouchDB中定义的,我很难以人类可读的方式定义它们。收下... 查看详情