前言: 经常操作服务器的运维工程师经常有这样的一个顾虑,如果我或者其他同事操作服务器,这样造成问题后我该怎么查看到底哪一步错误了,没有记录,查找造成问题的原因就相当困难,今天介绍两个神一样的命令来帮助你解决这样的问题,这两个命令分别是: script 和 scriptreplay
-
命令介绍
script :使用来记录你的操作命令,并且可以进行同时记录到的缓存存放到一个文件进行实时保存
scriptreplay : 是进行播放的命令,使用这个命令加载之前使用script命令记录存放的文件便可以进行播放,完整地回放当时的操作,画面高清无码的小电影,哈哈哈,有没有很激动首先来看一下script这个命令的使用帮助说明:
[root@gz--vm-workstation-0001 ~]# script --help
几个常用的参数讲一下:
-a 是进行进行追加方式添加到文件之中,也就是说如果已经存在这个文件就不会清空覆盖掉之前的数据
-f 进行强制刷新缓存,也就是说每输入一个命令就会将缓存里的数据进行存储到文件
-q 是安静模式,不会打印出任何提示语句表明在录制你的命令,这个参数很好的在后台进行默认记录
-t 是将时间数据输出到标准错误文件,使用scriptreplay播放时候也会使用这个文件进行时间
再看一下scriptreplay的使用帮助说明:
[root@gz--vm-workstation-0001 ~]# scriptreplay --help
常用的参数说明:
-t 是对应的存储的时间文件,也就是下面将提到的RecordCommand.time
-s 对应的是缓存的session记录文件,也就是下面提到的RecordCommand.session
- 命令例子说明
- script
我们要记录操作的终端进行操作,在shell命令行输入
[root@gz--vm-workstation-0001 ~]# script -t 2>/tmp/RecordCommand.time -af /tmp/RecordCommand.session
- script
没添加 -q 参数,就把 script started,file ****这句话打印出来,如果添加 -q 参数就没有提示这句话,建议在生产环境添加 -q 进行屏蔽打印出这类信息
这样加-q参数就屏蔽了启动提示语了
- scriptreplay
下面我们就可以使用scriptreplay来进行播放我们的小电影了
[root@gz--vm-workstation-0001 ~]#scriptreplay -t
/tmp/RecordCommand.time -s /tmp/RecordCommand.session
- 或者可以做成一个shell脚本,不用一个一个命令这样敲,直接运行进行记录或者直接播放,写这个脚本就几句代码,相信你们可以的
-
下面还说一个script在实际中使用,它结合mkifo可以进行实时播放直播,就是你在敲命令的时候别人可以通过另一个窗口看到,在教学或者监督部门同事在操作重要步骤时候有很好的作用
先说明一下mkfifo命令
mkfifo 使用指定的文件名创建FIFO(也称为"命名管道")."FIFO"是一种特殊的文件类型,它允许独立的进程通讯. 一个进程打开FIFO文件进行写操作,而另一个进程对之进行读操作, 然后数据便可以如同在shell或者其它地方常见的的匿名管道一样流线执行.
当你想进行广播让别人看到你操作时候,就可以在linux下面/tmp目录(目录自己定义,个人建议而已)使用mkfifo 创建一个文件,并且使用script命令启动
mkfifo /tmp/TestMkfifo.log;script -f /tmp/TestMkfifo.log
这样就启动完成了,其他人在其他窗口或者终端进行登陆这台服务器,并且切换到/tmp目录下,执行命令 cat /tmp/TestMkfifo.log ,这样在他所在的窗口就可以看到你操作的任何操作并且实时在他的窗口进行显示