免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6556 | 回复: 4
打印 上一主题 下一主题

[分享]使用Screen实现一个终端多个窗口 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-01 10:42 |只看该作者 |倒序浏览
本帖最后由 zyqduron 于 2010-06-01 12:38 编辑

原文链接:使用Screen实现一个终端多个窗口
GNU Screen 是一款免费的终端复用程序,它允许一个用户通过单独的窗口或单独的远程终端会话来访问多个分割的终端会话。这段是引用wikipedia.org的解释,实际上Screen实现的就是在一个会话中再打开多个会话。文字描述的不是很明白,看下面的截图就一清二楚了:

它是如何实现的的,下面介绍操作步骤:
1、远程服务器设置

安装screen:
yum install screen -y    [CentOS/RedHat]
apt-get install screen    [Ubuntu/Debian]

配置screen
vi ~/.screenrc
  1. hardstatus on
  2. hardstatus alwayslastline
  3. startup_message off
  4. termcapinfo xterm ti@:te@
  5. hardstatus string "%{= kG}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "
  6. screen -t bash1 1
  7. screen -t bash2 2
  8. screen -t bash3 3
  9. screen -t bash4 4
复制代码
上面的配置基本上就是告诉Scree在xterm的下部显示一个状态栏。并且定义指示器的显示方式。并开启四个子shell,名字分别为 bash1~4。
2、连接远程服务器

通过SecureCRT连接
设置

























这里设置的是连接到SSH服务器自动运行screen程序,从而调用screen的配置文件,启动4个子bash程序。如果不是每次都有这方面的需求的话,也没有必要设置该项,等到想用的时候在执行screen命令也不迟。另外使用screen启动的会话不会因为session的断开而关闭。有关 screen的使用参见:使用 screen 管理你的远程会话

Screen中窗口的控制都是使用快捷键来操作,如下:
Ctrl+a n        下一个窗口
Ctrl+a p        上一个窗口
Ctrl+a [1-4]        跳转到指定编号的窗口
Ctrl+a d        断开会话,并不会关闭

查看当前的screen进程
scren -ls
There is a screen on:
9505.main       (Detached)
1 Socket in /var/run/screen/S-root.
关闭指定的screen
kill -9 9505

Linux下连接
先编写一个脚本:
vi remote_screen
  1. orig=`hostname`
  2. echo -e "\033]2;$1\007"
  3. ssh -t $1 screen -S main -xRR -p $2 -q
  4. echo -e "\033]2;$orig\007"
复制代码
设置可执行
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,当我想重新连接时再运行一遍上面的命令即可。remote_screen命令支持两个参数第二个参数是连接时打开的窗口,如我第一次连接时默认有四个窗口分别为bash1、bash2、bash3、bash4,我断开后第二次连接可以写成remote_screen 192.168.108.110 bash2 这样的话连接后就直接打开了bash2窗口。
备注:

1、连接到screen后可以使用Ctrl+a ? 的方式查看帮助。
2、断开screen后并不是关闭了screen,可以使用screen -ls 查看当前打开的socket有哪些,使用screen -r pid的方式连接已经存在的socket
3、关闭session后screen的进程还会存在,这样我们在执行一些耗费很长时间的命令时就不必再使用nohup命令了
4、screen -ls 后会显示已经存在的screen socket,使用kill -9 pid的方式关闭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/

论坛徽章:
0
2 [报告]
发表于 2010-06-01 16:56 |只看该作者
还是yakuake好

论坛徽章:
0
3 [报告]
发表于 2010-06-01 17:07 |只看该作者
是把screen禁掉了吧

论坛徽章:
0
4 [报告]
发表于 2011-02-06 17:52 |只看该作者
呵呵呵,SecureCRT也很好用

论坛徽章:
34
亥猪
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉鸡
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龙
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系统版块每日发帖之星
日期:2015-11-06 06:20:00操作系统版块每日发帖之星
日期:2015-11-08 06:20:00操作系统版块每日发帖之星
日期:2015-11-19 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13
5 [报告]
发表于 2011-02-07 02:09 |只看该作者
不错, screen 挺好用的,特别是后台传东西,方便检查。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP