Unix 基本指令: script 抓取 Terminal 顯示畫面, 存成檔案

在 debug, compile, make world... 的時後, 如果訊息太長, 通常都是用 screen 往上慢慢翻, 不然就是用 "> file" 將輸出導到某個檔案去, 然後再去看那檔案的內容.

但是現在遇到一個問題, 我是遠端 ssh 執行某個指令, 然後要接收他的回傳值, 這讓上述的兩種作法都行不通.

  • screen: 因為一次上百台機器, 記錄太長, 搜尋困難
  • "> file": 在接收回傳值前, 都有些問答要答(ex: 問密碼, 問 y/n 等等的), 用此方法會看不到, 以致無法做此問答動作.

此時就要請出 script 的命令來用, 用法如下:

  • script [filename] # 開始記錄(Terminal 中的內容)
  • exit # 此時就會將 Terminal 的內容寫入 [filename] 中

ex:

  • script /tmp/make_world.log
  • ... make world ..... 開始創造世界...
  • exit
  • less /tmp/make_world.log # 就可以看到中間所有過程(也可當記錄教學用)

還有一些詳細的參數, 可自己再 man script.


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 News-Unix。將永久鏈結加入書籤。

Unix 基本指令: script 抓取 Terminal 顯示畫面, 存成檔案 有 8 則回應

  1. letoh 說道:

    script 的確是可以這樣用,不過有一個缺點,會記錄所有按鍵動作
    如果只是要記錄 output,也可以考慮使用 tee 這隻程式
    最後的結果乾淨多了

  2. Tsung 說道:

    感謝指點, 但是我剛剛用 tee 的狀況是, 好像不太合用(還是應該說我不會用)..
    ls / | tee /tmp/xxx
    我是先這樣子測試是 ok 的, 但是若我要執行多重指令, 不知道該怎麼用耶.. Orz..

  3. letoh 說道:

    嗯 這只是我個人的使用習慣啦,未必適用於你的要求
    如果有多個指令的話,tee 會比較麻煩
    我自己的使用是這樣的
    1.如果那一堆指令是固定的,我會寫到一個 script 去跑結果就可以丟給 tee
    也可以 sh | tee log 這樣一直到離開那個 shell 之前 所有丟到 stdout 的東西都會被記錄下來
    2.如果是記錄任意的操作過程,我一般就直接用 screen 的 log 功能(c-a H)來記錄

  4. Tsung 說道:

    感謝您的經驗提供, 看起來 screen c-a H 的記錄功能會更好用~~ 😀
    我再來試試看~~~ 感恩~ Orz..

  5. jeffhung 說道:

    當這類事情變多的時候,就值得寫一隻 script 專門來搞。請笑納:
    http://www.jeffhung.net/blog/articles/jeffhung/6/

  6. Tsung 說道:

    我主要遇到的問題主要是要做記錄, 找不到好方法來記錄...
    不過您寫的這支 script 很棒, 感謝提供 😀

  7. Fwolf 說道:

    生成的log文件里面带有esc颜色代码,看的时候不方便
    我写了一个在线小工具,可以把他们转换为html代码
    欢迎使用:
    http://fwolf.com/tools/screenlog2html.php

  8. Tsung 說道:

    這個實在太棒了, 感謝您 😀

發表迴響