scriptreplay
重新播放終端會話的所有操作
補充說明
scriptreplay 用於在終端中,根據 script
命令記錄的終端數據文件和時間日誌文件,重現當時用戶的所有操作和命令的輸出信息。簡而言之,重現播放當時終端會話發生的一切信息,而不是重新運行一遍命令。例如,用戶當時在輸入某條命令時,字符的鍵入和刪除也都會被重現。非常適合用於教程演示場合。而且,在機器 A 上面使用 script
命令記錄終端操作,可以在機器 B 上面使用 scriptreplay
命令重新播放。
語法
1scriptreplay [options] [-t] timingfile [typescript [divisor]]
選項
1-t, --timing file # 記錄時間日誌的文件名稱
2-s, --typescript file # 記錄終端數據信息的日誌文件名稱
3-d, --divisor number # 表示倍速播放,把時間日誌文件記錄的時間間隔都除以 number
4 # -d 2 表示播放速度是原始輸入單條命令的速度的兩倍,-d 0.1 表示播放單條命令的速度減慢 10 倍
5-m, --maxdelay number # 表示命令之間的最大延遲時間(單位是秒)
6 # -m 2 表示 command.log 中存放的兩條命令之間的間隔時間如果大於兩秒,則按兩秒執行播放
7-V, --version # 顯示版本信息並退出
8-h, --help # 顯示幫助文本並退出
參數
- 時間日誌文件:存儲時間日誌信息的文件名稱
- 終端數據文件:存儲終端數據信息的文件名稱
實例
1# 重新播放終端內容,默認第一個參數是時間日誌,第二個參數是終端數據文件
2scriptreplay time.file command.log
3# 重新播放終端內容,播放快進速度爲 1 ,命令之間最大延時爲 2 秒
4scriptreplay -d 1 -m 2 -t time.file -s command.log
記錄終端內容到文件
1zfb@localhost:~$ script -t 2>time.file -a -f command.log
2Script started, file is command.log
3zfb@localhost:~$ echo "hello, world"
4hello, world
5zfb@localhost:~$ echo $(date "+%Y-%m-%d %H:%M:%S")
62020-12-23 20:48:46
7zfb@localhost:~$ echo "Bye"
8Bye
9zfb@localhost:~$ ls -al
10total 20
11drwxr-xr-x 2 zfb zfb 4096 Dec 23 20:48 .
12drwxr-xr-x 37 zfb zfb 4096 Dec 23 20:49 ..
13-rw-r--r-- 1 zfb zfb 0 Dec 23 19:03 a.txt
14-rw-r--r-- 1 zfb zfb 12 Dec 23 19:04 b.txt
15-rw-r--r-- 1 zfb zfb 2744 Dec 23 20:49 command.log
16-rw-r--r-- 1 zfb zfb 790 Dec 23 20:49 time.file
17zfb@localhost:~$ exit
18Script done, file is command.log
19zfb@localhost:~$
重新播放終端內容
1zfb@localhost:~$ scriptreplay -d 1 -m 2 -t time.file -s command.log
2zfb@localhost:~$ echo "hello, world"
3hello, world
4zfb@localhost:~$ echo $(date "+%Y-%m-%d %H:%M:%S")
52020-12-23 20:48:46
6zfb@localhost:~$ echo "Bye"
7Bye
8zfb@localhost:~$ ls -al
9total 20
10drwxr-xr-x 2 zfb zfb 4096 Dec 23 20:48 .
11drwxr-xr-x 37 zfb zfb 4096 Dec 23 20:49 ..
12-rw-r--r-- 1 zfb zfb 0 Dec 23 19:03 a.txt
13-rw-r--r-- 1 zfb zfb 12 Dec 23 19:04 b.txt
14-rw-r--r-- 1 zfb zfb 2744 Dec 23 20:49 command.log
15-rw-r--r-- 1 zfb zfb 790 Dec 23 20:49 time.file
16zfb@localhost:~$ exit
17
18zfb@localhost:~$
其中,只有命令scriptreplay -d 1 -m 2 -t time.file -s command.log
是用戶輸入,其他均爲自動呈現(且視覺效果與真實用戶的操作一致)。通過查看上面輸出的時間2020-12-23 20:48:46
,可以證明,這是重新播放當時的記錄,而非重新執行一遍命令。也就是說,可以把time.file
和command.log
文件移動到任意一臺支持scriptreplay
命令的機器上,都可以動態重現命令輸入與終端回顯。
來源:https://github.com/jaywcjlove/linux-command
最後修改於: Wednesday, January 31, 2024
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。