免费注册 查看新帖 |

Chinaunix

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

[分享] 如何使用 script 实现屏幕输出共享 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-07 10:03 |只看该作者 |倒序浏览
**************************************************************************************
注 :该文章参考了如下内容 :

A)man script

作者 :ailms <ailms{@}qq{dot}com>

版本 :v1

完成时间  :2007/12/06 17:07

*************************************************************************************


前几天有朋友问到了如何把一个屏幕上的输出实时送到另外一个屏幕( http://linux.chinaunix.net/bbs/p ... p;page=1&extra=

刚好今天下午复习 script 命令的 manual 时看到了 -f 选项的用法介绍,则动手做了一下实验,

虽然没有 screen 命令强大,但也可以实现屏幕“共享“的要求

注 :这个方法有缺点,不支持”一对多“,也就是说只能”一对一“ 而已。

注 ;如果不使用 -f 则只有等到 pts/0 输入 exit 退出 script 后,pts/1 上才会显示结果

注 :下面的例子是在两个 pty 之间测试,也可以换成一个 pty ,一个 tty

1、先建了一个 named pipe


  1. mkfifo mypipe
复制代码


2、在要接收屏幕的那个 tty 或者 pty 上执行 。假设为 pts/1。注意,这时还不会有任何输出,只是做好接收的准备而已



       
3、现在在 pts/0 执行下面的命令



               
4、现在看到提示符,表示已经启动了一个 shell 了,你可以执行任何命令了。

  现在不管你在 pts/0 的shell 提示符下输入/删除/修改任何字符,在 pts/1 都可以实时看到
   
   可以看到即使 pts/0 的命令没有输入完毕,在 pts/1 上也可以被显示,所以实现了实时的要求

     
这是在 pts/0 上输入 da 两个字符的情况



这是在 pts/1 上显示的 da 两个字符的情况

         

5、现在顺序执行 date、whoami 命令



6、在 pts/1 上可以实时看到结果了




===========================================================================

[ 本帖最后由 ailms 于 2007-12-7 10:04 编辑 ]

评分

参与人数 1可用积分 +15 收起 理由
sakulagi + 15 原创内容

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2007-12-07 10:04 |只看该作者
如果不使用 -f 参数将是下面的效果,虽然也可以实现屏幕输出共享,但达不到实时的效果

pts/0 上执行了 date 命令



但 pts/1 上并未显示结果



只有等到 pts/0 上的 script 退出时,pts/1 上的 cat mypipe 才会有结果



论坛徽章:
0
3 [报告]
发表于 2007-12-07 10:29 |只看该作者
不错!
管道文件应用的一个有意思的实例。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2007-12-07 12:46 |只看该作者
一对多的话, 可以这样

  1. script 2>&1 | tee /dev/pts/*
  2. all your cmds here...
  3. ...
  4. ...
  5. exit
复制代码

论坛徽章:
0
5 [报告]
发表于 2007-12-07 12:54 |只看该作者
多谢烈火兄 ^_^ !

不过我想问一下,我在 tty1、tty2 分别用 cat mypipe ,为什么出来的结果会是一部分显示在 tty1 ,

而一部分输出显示在 tty2 呢?

论坛徽章:
0
6 [报告]
发表于 2007-12-07 12:57 |只看该作者
而且还有一个问题,用 tee 的方法必须是事先确定要输出到那些 tty

如果我是想让任意一个用户在登录后(不管是在 tty 还是 pty),都可以通过 mypipe

看到输出,这点如何做到呢?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2007-12-07 13:54 |只看该作者
干嘛非用pipe呀, 直接用echo >/dev/ttyN也可以呀, 用wall, write, talk等工具应该都可以达到类似的效果

论坛徽章:
0
8 [报告]
发表于 2007-12-07 14:11 |只看该作者
要实现1对多,可以这样:
发送者: script -f log
接收者:tail -f log

论坛徽章:
0
9 [报告]
发表于 2007-12-07 15:43 |只看该作者
原帖由 cuteorange 于 2007-12-7 14:11 发表
要实现1对多,可以这样:
发送者: script -f log
接收者:tail -f log


这个应该可以,多谢了

论坛徽章:
0
10 [报告]
发表于 2007-12-07 23:03 |只看该作者
学习,找这东西找了好久了,,, 收藏下先
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP