Linux文本模式下录制、回放和共享操作记录(script、scriptreplay、mkfifo)的妙用

简介: 在生产中,有时候需要把别人的操作过程录制下来,后期可以进行回放查看。还可以实时共享自己的操作,让另一个人在千里之外指导你进行操作。
 

在生产中,有时候需要把别人的操作过程录制下来,后期可以进行回放查看。还可以实时共享自己的操作,让另一个人在千里之外指导你进行操作。


环境:redhat 6.4

工具:script、scriptreplay、mkfifo
1
2
3
4
5
6
7
8
9
10
在redhat 6中自动带有scriptreplay指令,在redhat5中没有该指令,需要手动安装
从ftp: //ftp.kernel.org/pub/linux/utils/util-linux/v2.14/下载util-linux-ng-2.14.1.tar.gz
从http: //rpm.pbone.net中下载util-linux-2.13-0.44.el5.x86_64.rpm
安装rpm包
#rpm -ivh util-linux-2.13-0.44.el5.x86_64.rpm
解压util-linux-ng-2.14.1.tar.gz
#tar zxvf util-linux-ng-2.14.1.tar.gz
进入解压后的目录
然后运行
#./configure && make && make install

前言:
平时用history也能查自己操作过的命令,但是只能看自己输入的命令记录,系统的回显等等信息是看不了的。
而script工具可以记录在终端中所做的一切,包括回显信息等,就相当于是图形桌面环境下的录屏软件,不同的是,这里记录下来保存的文件是文本格式。
这些记录可以用来当作日志,保存终端所发生的一切,需要时回放查看。
也可以结合mkfifo,实时跟同事共享,协同工作。

一、script详解:
1、默认状态
默认情况下,我们可以通过在终端中输入script来启动scirpt命令:

1
2
3
4
5
6
[root@bing~]#script
Script started,file is typescript
[root@bing~]#                #进入录制状态,这期间输入的任何指令都会被记录
[root@bing~]# exit            #退出停止录制
Script doen,file is typescript
#如果script后面没有指定记录文件,默认会记录在当前目录下的typescript文件内

2、退出停止
#要退出记录活动,我们可以在终端中按下Ctrl+D,或者输入exit。

3、指定保存文件
平时最好还是指定保存的文件,如

1
[root@bing~]#script 20151031.log

4、查看编辑记录
可以用cat来查看保存下来的记录文件

1
[root@bing~]#cat 20151031.log

用vim查看编辑时,会有一些特殊字符,不是很友好。
单个记录文件是没办法用scriptreplay命令回放的,需要录制的时候一起保存时序文件,和时序文件一起才能回放。后面会讲。

5、实时保存
在退出script前,你会发现记录文件的大小为0 Kb,而在退出之后,文件大小会发生改变。
这说明默认不是实时记录的,一旦强制关闭了,就不会有记录。
所以平时需要加个-f参数,实时记录下来。

1
[root@bing~]#script -f 20151031.log

6、追加保存
如果保存完成之后,想继续用原来的文件保存,增加记录而不覆盖,需要加上-a参数

1
[root@bing~]#script -f -a 20151031.log

7、静默记录
-q选项可以让scirpt命令以静默模式运行

1
[root@bing~]#script -f -q 20151031.log

8、实例:静默开机启动,录制每个人的操作记录
写入环境配置文件中:

1
2
3
4
5
6
[root@bing~]#vim /etc/profile      
#如果只是想记录某一个用户的,写入用户的.bash_profile中即可,不能放在bashrc文件中
/usr/bin/script -qa / var /log/script.log
#-q以静默状态启动
#-a追加文件记录,不覆盖
[root@bing~]#source /etc/profile      #使环境变量生效,最好还是重启一下

二、scriptreplay详解:
scriptreplay的功能很简单,就是用来回放前面用script录制的记录。

1
[root@bing~]#scriptreplay timingfile typescript

timingfile就是时序文件,记录时间数据,记录每一个指令在何时运行
typescript就是记录操作步骤文件
这两个文件的名称和路径,可以任意指定。

所以录制的时候只有单个录制文件,没有录制时序,是没办法回放的。
这里就需要用到script的其它命令了

1
2
3
4
5
[root@bing~]#script -t 2>20151031.time -a 20151031.txt
#20151031.time 就是时序文件,记录操作的时间
#20151031.txt  记录操作步骤
-t选项用于将时序数据导入stderr
2>用于stderr重定向到20151031.time

现在就可以用scriptreplay来播放上面录制的操作了

1
[root@bing~]# scriptreplay 20151031.time 20151031.txt

三、script+mkfifo
mkfifo 使用指定的文件名创建FIFO(也称为”命名管道”).
“FIFO”是一种特殊的文件类型,它允许独立的进程通讯。 一个进程打开FIFO文件进行写操作,而另一个进程对之进行读操作, 然后数据便可以如同在shell或者其它地方常见的的匿名管道一样流线执行。
详细用法可man或百度。

这里主要是讲和script配合,达到多方协调配合。

1
[root@bing~]#mkfifo 20151031.log;script -f 20151031.log

然后同事可以远程在另一个终端登录,找到这个20151031.log文件,执行
cat 20151031.log
就会实时滚动输出你操作的内容

相关文章
|
9天前
|
存储 安全 Linux
Linux命令mkfifo深度解析
`mkfifo`在Linux中创建命名管道,用于进程间通信(IPC)。管道是临时的,非持久存储,作为数据传输的通道。特点是无缓冲、支持阻塞/非阻塞模式和权限控制。命令语法:`mkfifo -m <权限> 文件名`。示例:创建`mypipe`,一个进程写入,另一进程读取。注意选择阻塞模式、管理权限、删除不再使用的管道,并处理可能的错误。用于数据交换和高效能应用。
|
12天前
|
数据挖掘 Linux Perl
Linux命令join:高效处理文本数据的利器
`join`是Linux文本处理的强兵,用于基于共同字段合并两个已排序文件。它按字典序比较字段,支持自定义分隔符,且能处理未匹配行。`-a`显示未匹配行,`-e`指定空字段替换值,`-j`设置共同字段,`-o`定制输出格式,`-t`定义字段分隔符。在数据分析时,务必先排序文件,并根据需求调整参数。可与`sort`、`cut`等命令配合使用。
|
23天前
|
监控 Unix Linux
windows和linux实时监控文本内容的命令
windows和linux实时监控文本内容的命令
25 1
|
23天前
|
数据挖掘 Unix Linux
探索Linux中的强大文本处理工具——dgawk
dgawk,GNU awk的增强版,是一款强大的Linux文本处理工具,擅长模式扫描和数据提取。它提供复杂文本分析、易用性、可定制脚本及高效处理大文件的能力。基本语法为`dgawk 'pattern { action }' file`。通过打印、模式匹配、字段操作、BEGIN/END块及自定义函数等功能,用户能高效处理文本数据。掌握dgawk能提升文本分析效率,对系统管理员和数据分析师尤其有用。
|
25天前
|
Linux 应用服务中间件 网络安全
linux 初始化全部操作
linux 初始化全部操作
15 1
|
23天前
|
Linux C++
Linux C/C++目录和文件的更多操作
Linux C/C++目录和文件的更多操作
|
23天前
|
Linux
探索 Linux 中的 `bzmore` 命令:一个方便的文本查看工具
探索 Linux 中的 `bzmore` 命令:一个方便的文本查看工具
|
24天前
|
Ubuntu Linux
服务器硬件 做raid操作 ubuntu linux做raid
服务器硬件 做raid操作 ubuntu linux做raid
18 0
|
24天前
|
SQL 关系型数据库 MySQL
Linux 下mysql操作
Linux 下mysql操作
22 0
|
24天前
|
机器学习/深度学习 Shell Linux
linux shell脚本判断文件或文件夹是否存在循环操作
linux shell脚本判断文件或文件夹是否存在循环操作
29 0