Next:
關於各種 shell 的問題
Up:
自以為已經知道所有答案的人可能會問的高級問題
Previous:
能不能在一個 process 和 terminal 的連接已經斷掉之後再接回來,例如 在 background
有沒有辦法可以偷聽一個 terminal,就是說將其輸出複製一份至其他的 terminal。
有幾種方法可以達成這個目的,不過沒有一個是完美的:
kibitz 允許兩個(或更多)的人透過 shell(或其他的程式)彼此溝通。 它的用途有:
監視或援助令一人的 terminal session;
記錄所有的輸出入以用來能捲頁回去,儲存整個輸出入,甚至是可 以直接編輯它。
當團隊合作時,如製作 game、撰寫文件等工作,每個人都各有所長 各有所短,就可用此種方式彼此互補。
kibitz 是 'expect' 軟體的一部份,請查看問題 3.9。
kibitz 需要有被監視人的同意才能進行。如果想不取得同意就進行監視,那就 得用一些比較令人討厭的方法了:
你可以自己寫一個程式去搜查整個 kernel 的結構,監視 terminal 所 用的 output buffer,然後把它所輸出的字全抓下來。很明顯的,這是熟悉 Unix kernel 的人才可能做得到的。但是,不論你是用什麼方法大概都無法 拿到其他的 Unix 去用。
如果你是想要隨時監視一個特定、實際拉線連上的 terminal(例如,你想讓 管理者能夠從其他機器的終端機查看某部機器的 console),那你可以乾脆 接一台監視器在通往那台 terminal 的線上。舉例來說,把你的監視器的輸 出接到另一台機器的 serial port,然後執行一個程式去收集那個 port 的 輸入並把它轉到另一個 port 去,而這個 port 就真的連到你所要監視的 terminal 去。這樣做的話,你必須確定從該 terminal 來的輸出會隨著線傳 回去,即使你只是插接在電腦和 terminal 的中間,這並不會太難做到。 用 這個方法,對 terminal 佈線不太熟悉的人是無法發覺的。
在最近一版的 screen 中有一種 multi-user 模式可以用。若想多了解一 點 screen,請看問題 4.10。
如果你所使用的系統有提供 stream(如 SunOS,SVR4)那麼你可以使用 發表在 comp.sources.misc, volumn 28 中的 advise 程式。它並不需要先 執行。(但是,你必須要事先把你的系統設定成在開啟 tty 或 pty 時會自 動把 advise 模組放入 stream 中。)
Tan Koan-Sin
1999-03-02