2015-03-25 205 views

回答

0

您可以使用shell重定向或通過程序(如script)捕獲輸出 - 前提是程序是以「常規方式」啓動的。 (可以通過特殊設備寫入其他終端,並給予適當的權限)。

一個假定您已經瞭解重定向輸出,例如,

foo >bar 

,但有一些情況下,例如,繼續寫終端GUI程序。

不用擔心通過重定向輸出來干擾程序,我會運行script並在啓動script的shell中啓動程序。然後,從該shell寫入的任何內容都將轉到typescript文件(默認情況下)。另一方面,終端窗口的GUI程序可能/可能不可配置爲允許使用可捕獲輸出的啓動腳本對其進行自定義。

如在How to open process again in linux terminal?中所述,可以使用給定其進程ID的strace附加到正在運行的進程。使用7 Strace Examples to Debug the Execution of a Program in Linux中描述的-e選項,您可以提取write調用。

記住與strace從寫非打印字符轉換爲可打印文本,以及顯示strace參數的功能到一個固定的限制(你可以調整使用-s選項)。 strace的輸出可以被重定向(並且不需要在與原始過程相同的終端上運行)。

+0

謝謝。我忘了提及我無法終止/重啓進程,因爲這會中斷很多正在運行的服務。 – astralmaster 2015-03-25 11:49:43

+0

我更想過爲strace日誌寫入系統調用。 – astralmaster 2015-03-25 11:50:34