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 エスケープ コードを出力して、色を使用し、端末内でカーソルを移動します。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 に答える
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 に答える