2013-07-08 47 views
14

我已經嘗試將htop管道輸入到一個文本文件(例如htop > text.txt),但它給了我格式化字符串(見下文)的文字亂碼。有沒有辦法獲得更好的,人類可讀的輸出?htop輸出到人類可讀文件

^[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   \ 

回答

41

HTOP筆者在這裏。

不,沒有「好」的方法來獲取htop輸出到文件中。它是一個交互式應用程序,使用終端重繪例程來生成它的接口(因此,它使管道變得非常有意義,例如,將vim管道輸入到文本文件中 - 您將得到類似的結果)。

要以文本格式獲取有關過程的信息,請使用「ps」。例如,ps auxf > file.txt爲您提供了很多易於解析的信息(如果您不希望樹格式化,請輸入ps aux - 有關更多選項,請參見man ps)。

+3

感謝您的回覆。我特別試圖找到每個處理器的使用情況 - 哪個htop做得很好。有沒有辦法通過'ps'訪問它? – DilithiumMatrix

+3

thanx,但是男人對某個文件進行導出以使其更加可用 – themis

1

首先安裝重新編碼,然後將其編碼爲UTF-8:

$htop | recode utf-8 > test.txt 

然後貓的文件,你應該是不錯的。

+1

可能是一種很好的解決方法,但是當我嘗試過它時,它無法抓住所有進程列表,並且始終只顯示一個子集,而不是獲取信息的可靠方法。 – fduff

9

我有同樣的需要,並最終使用top而不是htop a是通過-b標誌提供批處理模式。

-b:批處理模式操作 開始頁首「批量模式」,這可能是從頂部將輸出發送到其他程序或文件是有用的。在這種模式下,頂層將不會接受輸入並運行,直到迭代限制您使用'-n'命令行選項設置或直到被終止。

因此,例如:

top -b -n 1 

希望這如果不使用htop有助於均勻。

-2

但是,如果您有多個顯示器,您可以在「記錄我的桌面」捕捉該區域時運行htop,這聽起來確實不太好。它更多的視頻,可能無助於搜索和排序,但它看起來不錯,漂亮。

12

htop輸出ANSI escape code使用顏色並在終端周圍移動光標。有一個偉大的命令行程序aha可用於將ANSI轉換爲HTML。

的Ubuntu/Debian安裝

apt-get install aha 

保存HTOP爲HTML文件輸出

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

完美無缺,謝謝! – Shevchuk

+0

另請參閱http://www.pixelbeat.org/scripts/ansi2html.sh – pixelbeat

+0

有關使用ansi2html.sh的示例,請參閱https://news.ycombinator.com/item?id=10323333,並且鏈接了一個功能請求向htop添加-b選項以使批處理更簡單 – pixelbeat

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 
2

該命令輸出純文本。 (它需要安裝ahahtml2text。)

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

與https://stackoverflow.com/a/30224271/230468有什麼不​​同? – DilithiumMatrix

+0

@DilithiumMatrix這會給你帶來乾淨的文本,沒有任何html標籤。 – k0fe

+0

@DilithiumMatrix忘記添加輸出命令。現在編輯。你試過了嗎?這是你需要的嗎? :) – k0fe