最近在 Linux 上開發一個與 Java 相關的專案。所有的作業都在文字終端機模式下執行,所以使用 screen 來當作多工的介面。因為是 web-based 專案,故從 Windows XP PC 工作機用 SSH 遠端連線到開發主機上,一面操作,一面以瀏覽器檢視輸出。

專案的開發需要一次開好幾個終端機視窗,screen 即使不作任何設定,也已經是一個非常方便的工具了。不過,其實我們還可以透過它的資源檔,直接指定所有工作視窗 (screen 的 window)。這樣不只能少打一點字,順便可以紀錄相關的工作檔案。

預設的 per-user 資源檔是 $HOME/.screenrc ,資源檔裡可以用 screen 指令來開啟視窗。

舉例說明

舉例子說明會比較清楚。如果我們希望 screen 在執行之後就開出兩個視窗,則 screenrc 可以這樣寫:

screen
screen

如果我們想在開視窗的同時指定視窗的編號,可以寫成這樣:

screen 0
screen 9

開出來的兩個視窗編號分別是 0 和 9。

基本上 screenrc 裡的 screen 指令,與 screen 環境下 Ctrl-a c 的動作是一樣的。

screen 除了可以指定視窗的編號,也可以指定標題 (caption/title)。例如:

screen -t monitor 0
screen -t daemon 9 tail -f /var/log/daemon.log

除了用 -t 參數指定標題之外,還可以在視窗編號之後指定該視窗要執行的程式。如果像之前不指定程式,預設就是啟動一個 shell;啟動程式的話,視窗會在程式執行完畢之後關閉 (不像先開 shell 再啟動的程式結束之後,還會回到 shell,因為 screen 是跳過 shell 直接喚起程式的)。

screen -t name 0 command 這種使用方式,也可以在 screen 執行環境裡使用。

另設資源檔

如果把工作專案相關的 screen 視窗設定在預設的 $HOME/.screenrc 裡,那不管是不是要工作,都會叫出工作用的視窗了。為了避免這個問題,最好把工作用的 screen 視窗設定寫到另一個資源檔,工作時再用像:

screen -c ~/.screenrc.work

這種方式叫出視窗。如果想要更方便一點,也可以設一個 alias:

alias scrwork='screen -c ~/.screenrc.work'

只要打 7 個字元就可以開始工作了。

Posted by yungyuc at 12:34, 3 comments, 0 trackback.
Navigate
Add a trackback
Comments
Re: screen 多終端機操作的技巧
Windows -> Linux 下好用的 ssh client 可能就是 putty。
piaip 另外從 putty 改了一個 pietty,是用來解決 putty 一些中文的問題,也許也可以試試看,
不過 peitty 因為一些開發上的原因,並不是非常 open source。
這對注重安全的 ssh client 算是一個缺點。

商用程式可以試試 SecureCRT,在轉換成 putty 之前我都是用這個。

其實平常我上 bbs 都是用 putty,看 ANSI 圖是會有一些破損的狀況出現,不過不太影響我的使用。
中文亂碼則是從來沒有出現過,Big5、UTF-8 我都用,
配合 screen 還可以組態成混合環境,已經非常方便了。
酷狗喵千代 at 2005-03-15 12:13.
Re: screen 多終端機操作的技巧
我再用screen跑一些程式(例如mud常用的tintin++)

會完全沒有辦法顯示中文

變奇奇怪怪的火星文字

有沒有辦法解決這個問題??
dexders at 2005-04-08 06:18.
Re: screen 多終端機操作的技巧
hmm... 不玩 mud,所以沒用過 tintin++ 。

ssh/telnet 是都沒有問題啦,不過 irssi 就不太能用 screen 硬幹了。
-----
yungyuc at 2005-04-08 11:58.
Add a comment

Your name. (required)

Your personal website. (optional)

Your email address. Will not show in page. (suggested, but optional)

Text format is "Plain Text".

Enter "LPErb"
© hover year to navigate month: powered by django