另一篇终端会话共享的文章:Linux终端会话实时共享(kibitz)
<https://www.cnblogs.com/f-ck-need-u/p/9583753.html>

使用script命令录制,使用scriptreplay播放录制的操作。共享终端的操作,则需要使用命名管道来实现。

1.1 录制
[[email protected] ~]# cd /tmp [[email protected] tmp]# script -t 2> timing.log -a
output.session # 开始录制 Script started, fileis output.session [[email protected] tmp]#
ls # 执行一个操作:命令ls abc.sh ab.sh index.html lost+found output.session scriptfifo
test test1 timing.log vmware-root [[email protected] tmp]# cd /tmp/test # 再执行一个操作:命令cd
[[email protected] test]# exit # 结束录制 exit Script done, fileis output.session
其中"-t 2> timing.log"是要回放的必须选项,不加"2>"将导致开启录制后的任何输入都是乱码状态,不加"-t
timing.log"将不能使用scriptreplay来回放。timing.log记录的是每个时间段输入了多少字符。通过timing.log和output.session配合可以实现回放。

注意点是,录制前保证timing.log和output.session是空文件,否则将导致回放时操作不一致。

1.2 回放
[[email protected] test]# scriptreplay timing.log output.session

如果觉得回放的速度过慢(录制时有些地方停顿,比如输入了一个命令后,隔了一段时间才输入另一个命令,这段时间对于回放来说显得慢很正常),可以修改timing.log文件。这个文件中分两个字段,第一个字段记录的是从上次输出后到该次输出的时间间隔,第二个字段是从output.session中读取的字符数。要修改回放速度,只需将第一个字段较长的间隔改短一点就可以。但是不应该改的太短,否则回放速度过快。我觉得将间隔较长的改成0.3-0.7秒,效果还不错。
[[email protected] ~]# cat timing.log 0.117244 16 0.007955 1 0.298074 1 #
此处将原来的2.298074改为0.3秒0.216628 1 0.092781 1 0.081659 1 0.083258 1 0.419445 1
0.314128 1 0.100810 1 0.083998 30 0.491283 1 0.266129 1 #
此处原来也是2.266129秒,显然经过一次命令输出之后停顿了2秒多0.099767 1 0.127625 1 0.078809 1 0.181493 1
0.147795 1 0.115808 1 0.077416 1 0.274658 1 0.257042 1 0.524460 4 0.297133 38
0.458018 1 0.416350 1 0.187270 1 0.125467 1 0.100756 8
1.3 终端屏幕分享

通过管道来传输信息实现。需要一个pipe文件,并在需要展示的终端打开这个管道文件。

在终端1(作为主终端,即演示操作的终端)上使用mkfifo创建管道文件。
[[email protected] tmp]# mkfifo scriptfifo [[email protected] tmp]# ll scriptfifo prw-r--r--
1 root root 0 Sep 26 13:04 scriptfifo # 权限位前面的第一个p代表的就是pipe文件。
 

在终端2上打开pipe文件。
[[email protected] ~]# cat /tmp/scriptfifo
 

在终端1上使用script -f开始记录操作,之后的操作将会分享在终端2上。
[[email protected] tmp]# script -f scriptfifo
 



使用exit即可停止分享并退出记录行为。
[[email protected] tmp]# exit exit Script done, file is scriptfifo
在被分享终端上参与分享状态后将不能执行任何操作,执行的操作会被记录下来,并在主终端停止分享后自动执行。

需要注意的是,只能给一个会话共享会话终端。如果多个会话 cat scriptfifo ,会导致共享切开显示在多个不同会话上。