通过Linu命令实现屏幕录制和回放(r4笔记第5天)
平时在工作学习中如果可以录屏的话,那么在以后再看真是很难得的学习资料。有些远程的操作都是命令行,如果使用录屏软件,可能占用的空间极大。其实Linux中可以通过命令行来实现屏幕录制和屏幕回放。 如果自己需要给别人演示一些操作,可能事先已经准备好了,在演示的时候只需要播放即可。 或者在系统升级的时候需要保留必要的日志,在以后可以更加有针对性的总结,都可以通过屏幕录制功能来完成。 我们需要系统中已经安装script,scriptreplay. 比如我们可以通过如下的方式来完成。简单运行几个命令,然后通过回放来看是否能够一步一步的输出。
$ script -t 2> time.log -a record.session
Script started, file is record.session
$ echo test begin
test begin
$ echo test start
test start
$ echo test end
test end
$ exit
exit
Script done, file is record.session
到此屏幕的录制就结束了,我们通过scriptreplay来回放这个过程。
$ scriptreplay time.log record.session
输入这个命令之后,你就会看到屏幕好像被人操纵了一样,一步一步的运行命令,然后输出,感觉很有成就感。
如果你需要在别的机器上查看这个过程,可以把time.log和record.session这个两个生成的文件拷贝过去,直接运行命令即可。
时间戳文件的内容如下。都是记录了一点点的操作时间信息。
$ cat time.log
0.350314 17
0.052705 1
1.176860 1
0.241008 1
0.064975 1
。。。。
而record.session这个文件就是个日志文件,里面记录了每一步操作的内容。
Script started on Sun 04 Jan 2015 05:13:46 AM PST
$ echo test begin
test begin
$ echo test start
test start
$ echo test end
test end
$ exit
exit
Script done on Sun 04 Jan 2015 05:14:05 AM PST
以上的功能能够极大的提高我们的工作效率,毕竟很多问题的排查中都需要日志,都需要一些细节的操作内容信息。这些信息就相当于完整的回放了问题的处理过程。 如果你还不满足于此,可以试试实时分享屏幕内容给其他人,其他人不需要装其他的视频软件就能够看到你所有的操作。 毕竟视频的录制还是需要很多的资源的。 经过反复尝试,发现这个操作在两个人之间共享输出还是正常的,如果多个session,可能有些操作内容会不太完整。 我们开启两个session来操作。假设session1和session2都在同一个服务器端,同一个目录下。 session1 创建fifo的日志。
>mkfifo fifo.log
session2 开始准备监听
>cat fifo.log
session1 开始准备输出
>script -f fifo.log
Script started, file is fifo.log
$ ls --这个时候我们的任何操作在session2中都会捕捉到。
- Groovy实现原理分析——准备工作
- HBCTF第一场2个pwn题的简单分析
- ACM竞赛之输入输出(以C与C++为例)
- 能让程序做的事情坚决不用人来做——批量修复markdownlint MD034警告
- swift demo1 tableview
- Swift Alamofire
- 给Ocelot做一个Docker 镜像
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十一)
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十)
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](九)
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](八)
- 第二届ZCTF逆向题分析(一)
- 渗透测试时,需要注意浏览器选项
- 渗透测试时,需要注意浏览器选项
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法