- 論壇徽章:
- 0
|
本帖最后由 zyqduron 于 2010-06-01 12:38 編輯
原文鏈接:使用Screen實現(xiàn)一個終端多個窗口
GNU Screen 是一款免費的終端復(fù)用程序,它允許一個用戶通過單獨的窗口或單獨的遠(yuǎn)程終端會話來訪問多個分割的終端會話。這段是引用wikipedia.org的解釋,實際上Screen實現(xiàn)的就是在一個會話中再打開多個會話。文字描述的不是很明白,看下面的截圖就一清二楚了:
screen_1.png (25.94 KB, 下載次數(shù): 26)
下載附件
2010-06-01 10:37 上傳
它是如何實現(xiàn)的的,下面介紹操作步驟:
1、遠(yuǎn)程服務(wù)器設(shè)置
安裝screen:
yum install screen -y [CentOS/RedHat]
apt-get install screen [Ubuntu/Debian]
配置screen
vi ~/.screenrc- hardstatus on
- hardstatus alwayslastline
- startup_message off
- termcapinfo xterm ti@:te@
- hardstatus string "%{= kG}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "
- screen -t bash1 1
- screen -t bash2 2
- screen -t bash3 3
- screen -t bash4 4
復(fù)制代碼 上面的配置基本上就是告訴Scree在xterm的下部顯示一個狀態(tài)欄。并且定義指示器的顯示方式。并開啟四個子shell,名字分別為 bash1~4。
2、連接遠(yuǎn)程服務(wù)器
通過SecureCRT連接
設(shè)置
screen_SecureCRT_1.png (30.39 KB, 下載次數(shù): 23)
下載附件
2010-06-01 10:38 上傳
這里設(shè)置的是連接到SSH服務(wù)器自動運行screen程序,從而調(diào)用screen的配置文件,啟動4個子bash程序。如果不是每次都有這方面的需求的話,也沒有必要設(shè)置該項,等到想用的時候在執(zhí)行screen命令也不遲。另外使用screen啟動的會話不會因為session的斷開而關(guān)閉。有關(guān) screen的使用參見:使用 screen 管理你的遠(yuǎn)程會話
Screen中窗口的控制都是使用快捷鍵來操作,如下:
Ctrl+a n 下一個窗口
Ctrl+a p 上一個窗口
Ctrl+a [1-4] 跳轉(zhuǎn)到指定編號的窗口
Ctrl+a d 斷開會話,并不會關(guān)閉
查看當(dāng)前的screen進(jìn)程
scren -ls
There is a screen on:
9505.main (Detached)
1 Socket in /var/run/screen/S-root.
關(guān)閉指定的screen
kill -9 9505
Linux下連接
先編寫一個腳本:
vi remote_screen- orig=`hostname`
- echo -e "\033]2;$1\007"
- ssh -t $1 screen -S main -xRR -p $2 -q
- echo -e "\033]2;$orig\007"
復(fù)制代碼 設(shè)置可執(zhí)行
chmod +x remote_screen
mv remote_screen /usr/local/bin/
使用:
remote_screen destination [window_name]
實例:
remote_screen 192.168.108.110
ctrl+a d可以斷開會話回到本地shell,當(dāng)我想重新連接時再運行一遍上面的命令即可。remote_screen命令支持兩個參數(shù)第二個參數(shù)是連接時打開的窗口,如我第一次連接時默認(rèn)有四個窗口分別為bash1、bash2、bash3、bash4,我斷開后第二次連接可以寫成remote_screen 192.168.108.110 bash2 這樣的話連接后就直接打開了bash2窗口。
備注:
1、連接到screen后可以使用Ctrl+a ? 的方式查看幫助。
2、斷開screen后并不是關(guān)閉了screen,可以使用screen -ls 查看當(dāng)前打開的socket有哪些,使用screen -r pid的方式連接已經(jīng)存在的socket
3、關(guān)閉session后screen的進(jìn)程還會存在,這樣我們在執(zhí)行一些耗費很長時間的命令時就不必再使用nohup命令了
4、screen -ls 后會顯示已經(jīng)存在的screen socket,使用kill -9 pid的方式關(guān)閉socket
參考文章:
http://en.wikipedia.org/wiki/GNU_Screen
http://www.ibm.com/developerworks/cn/linux/l-cn-screen/
http://www.earthinfo.org/an-easy-way-to-use-gnu-screen-over-ssh/ |
|