screen 可以在一个登陆终端中模拟多各种虚拟的登陆终端,可 以方便的在各个终端之间切换。
还可以把所有的虚拟终端统统挂起,然后以后再重新连接,就象 你从来都没有离开过一样。和 Windows 2000 中的休眠功能很像。我 经常需要使用 PuTTY 登陆到 Unix 的服务器,然后运行仿真程序。 仿真程序要运行几天,但是我的 Windows 客户端可不能开着几天, 因为他可能断电,而且毕竟不是服务器,但是如果关闭了 PuTTY 程 序,所有由该终端启动的后台程序因为失去控制终端而关闭了。使用 screen 后,就可以把所有虚拟终端挂起,然后就可以关闭 PuTTY 了, 以后可以重新恢复所有虚拟终端。
screen 的配置方法如下:
- 建立 ~/.screenrc , 内容如下:
vbell off
autodetach on
startup_message off
bind k
bind ^k
bind .
bind ^\
bind \\
bind ^h
bind h
hardstatus string "[screen %n%?: %t%?] %h"
shelltitle "sh"
caption always "%{= dd}%-w%{+bu}%n %t%{-}%+w %=%c"
bind ^l "windowlist"
maptimeout 200
bindkey -d "ainfo" screen -t info info
bindkey -d "avi" screen -t vi vi
bindkey -d "apy" screen -t python python
bindkey -d "aa" other
bindkey -d "alist" windowlist
bindkey -d "anew" screen
#escape \033\033
escape ``
vbell off # default: off
vbell_msg " !!! Ring, Ring!! -- " # default: "Wuff,Wuff!!"
bell_msg " bell from windows [%n %t] " # default: "Wuff,Wuff!!"
- 建立 ~/.screen.bashrc , 内容如下:
PROMPT_COMMAND='echo -n -e "\033k$(basename $(pwd))\033\134"' PS1=$ SHELL=/bin/bash- 建立 ~/bin/scr , 内容如下:
#!/bin/bash screen -s $HOME/bin/screenshell
- 建立 ~/bin/screenshell , 内容如下:
#!/bin/bash exec /bin/bash --rcfile $HOME/.screen.bashrc- 然后用下面的命令把上面的两个文件改为可执行文件。
chmod +x ~/bin/scr chmod +x ~/bin/screenshell
配置好了。使用方法如下:
- 如果是第一次启动 screen ,运行命令
~/bin/scr注意到最下面一行,指明了当前工作目录。 - 快速连续的输入 anew ,可以开启一个新的虚拟终端。注意一 定要快,也就是 anew 的每一个字母之间的按键的时间间隔一定要小 于 200 ms ,否则认为是输入了普通的 anew 四个字符。可以通过 修改 .screenrc 中的 maptimeout 改变 200 ms 的默认配置。 - 快速连续输入 avi 表示开启一个新的虚拟终端并且在这个终端 里运行 vim 。 - 快速连续输入 ainfo 表示开启一个新的虚拟终端并且在这个终端 里运行 info 。 - 可以配置 .screenrc 增加更多的快速开启一个程序的快捷键。 - 快速连续输入 aa , 在最近访问的两个虚拟终端之间切换。 - <EM>`</EM> ,也就是数字 1 旁边那个键,表示特殊用途, ` 1 .. 9 ,表示选择某一个虚拟终端。 连续两个 <EM>``</EM> 表 示输入一个 <EM>`</EM> 字符。
- <EM> ` Ctrl+l </EM> 会弹出选择虚拟终端的菜单来。 - <EM> ` d </EM> 表示挂起 screen 会话 。 以后任何时候,都可以用 screen -r 重新恢复原来的 screen 会话。 就像你从来都没有离开过一样。挂起了一个 screen 会话并不影响任 何已经启动的程序,他们还在运行。 - screen -list 可以查看有多少个 screen 的会话。