2016年8月26日 星期五

Linux Screen指令 - 在一個putty終端機開啟多個shell視窗

1. screen指令用在一個終端機上開啟多個shell視窗,一般我們用putty連線到Linux主機,通常只是一個終端機開啟一個shell視窗,利用screen指令可以在一個終端機上開啟多個shell視窗,在多個shell視窗中操作,不必一直切換putty視窗,讓工作更有效率。

2. 安裝screen
$ sudo apt-get install screen
3. 啟動screen
$ screen
4. 組合鍵說明
ctrl + a: 按住ctrl不放再按a。 ctrl + a, c: 按住ctrl不放再按a,之後同時放開ctrl + a,再按c。

5. screen線上說明
進入screen後,按下ctrl + ?
$ screen

$ [ctrl + ?]

break       ^B b       flow        ^F f       lockscreen  ^X x       pow_break   B          screen      ^C c       width       W
clear       C          focus       ^I         log         H          pow_detach  D          select      '          windows     ^W w
colon       :          hardcopy    h          login       L          prev        ^H ^P p ^? silence     _          wrap        ^R r
copy        ^[ [       help        ?          meta        a          quit        \          split       S          writebuf    >
detach      ^D d       history     { }        monitor     M          readbuf     <          suspend     ^Z z       xoff        ^S s
digraph     ^V         info        i          next        ^@ ^N sp n redisplay   ^L l       time        ^T t       xon         ^Q q
displays    *          kill        K k        number      N          remove      X          title       A
dumptermcap .          lastmsg     ^M m       only        Q          removebuf   =          vbell       ^G
fit         F          license     ,          other       ^A         reset       Z          version     v

^]   paste .
"    windowlist -b
-    select -
0    select 0
1    select 1
2    select 2
3    select 3
4    select 4
5    select 5
6    select 6
7    select 7
8    select 8
9    select 9
I    login on
O    login off
]    paste .
|    split -v
:kB: focus up
6. screen的detach和re-attach
當開啟一個putty終端機,在執行編譯程式碼的動作,編譯程式碼可能需要一段時間,這時想去做看其它程式碼,可以先將screen先detach,編譯程式碼的動作會在背景執行,直到我們再re-attach,視窗又會跳回編譯程式碼的樣子,這裡舉ping的例子來說明。
$ screen

$ ping www.google.com.tw

$ [ctrl + d]

detach後,等到想回去時,再re-attach,如果只有一個screen,可以直接打screen -r,如果多個screen,需指定screen ID。

$ screen -r
7. 開啟多個screen
當開啟多個screen時,可以使用screen -ls列出所有screen,再使用screen -r ,re-attach回指定的screen。
$ screen
$ ping www.google.com.tw
$ [ctrl + d]

$ screen
$ ping www.yahoo.com.tw
$ [ctrl + d]

$ screen -ls
$ sccreen -r <screen ID>
8. screen參數
screen -c : 指用指定的screen設定檔,在$HOMOE/.screenrc

screen -r: re-attach最近detach的screen視窗
screen -r : re-attach指定的screen視窗

screen -ls: 列出目前所有的screen視窗

screen -L: 開啟自動記錄功能
9. 進入screen後,快速鍵

ctrl + a, c: 建立新的screen視窗
ctrl + a, k: 關閉目前的screen視窗

ctrl + a, 0 - 9鍵: 利用數字鍵,切換指定的screen視窗
ctrl + a, n: 切換到下一個screen視窗
ctrl + a, p: 切換到上一個screen視窗
ctrl + a, w: 列出目前所有的screen視窗
ctrl + a, ": 列出目前所有的screen視窗,利用上下鍵切換screen視窗

ctrl + a, tab鍵: 切換分割視窗
ctrl + a, Q: 關閉目前分割視窗

ctrl + a, S: 將畫面分割成上下視窗
ctrl + a, |: 將畫面分割成左右視窗

ctrl + a, x: 鎖定screen視窗,需用Linux登入密碼解開

ctrl + a, H: 開啟或結果screen記錄功能

ctrl + a, C: 清資screen視窗中的內容

ctrl + a, d: detach screen視窗
ctrl + a, D: 強制detach screen視窗

ctrl + a, i: 顯示目前screen視窗的內容
ctrl + a, t: 顯示目前時間
ctrl + a, v: 顯示版本資訊
ctrl + a, ?: 顯示說明
10. 開啟左右分割視窗範例
$ screen

$ [ctrl + a, |]

$ [ctrl + a, tab鍵]

$ [ctrl + a, c]
11. 參考來源
http://www.gnu.org/software/screen/manual/
https://blog.gtwang.org/linux/screen-command-examples-to-manage-linux-terminals/
http://puremonkey2010.blogspot.tw/2014/12/linux-screen-unixlinux.html