前言: 經(jīng)常操作服務(wù)器的運(yùn)維工程師經(jīng)常有這樣的一個(gè)顧慮,如果我或者其他同事操作服務(wù)器,這樣造成問(wèn)題后我該怎么查看到底哪一步錯(cuò)誤了,沒(méi)有記錄,查找造成問(wèn)題的原因就相當(dāng)困難,今天介紹兩個(gè)神一樣的命令來(lái)幫助你解決這樣的問(wèn)題,這兩個(gè)命令分別是: script 和 scriptreplay
-
命令介紹
script :使用來(lái)記錄你的操作命令,并且可以進(jìn)行同時(shí)記錄到的緩存存放到一個(gè)文件進(jìn)行實(shí)時(shí)保存
scriptreplay : 是進(jìn)行播放的命令,使用這個(gè)命令加載之前使用script命令記錄存放的文件便可以進(jìn)行播放,完整地回放當(dāng)時(shí)的操作,畫(huà)面高清無(wú)碼的小電影,哈哈哈,有沒(méi)有很激動(dòng)首先來(lái)看一下script這個(gè)命令的使用幫助說(shuō)明:
[root@gz--vm-workstation-0001 ~]# script --help

幾個(gè)常用的參數(shù)講一下:
-a 是進(jìn)行進(jìn)行追加方式添加到文件之中,也就是說(shuō)如果已經(jīng)存在這個(gè)文件就不會(huì)清空覆蓋掉之前的數(shù)據(jù)
-f 進(jìn)行強(qiáng)制刷新緩存,也就是說(shuō)每輸入一個(gè)命令就會(huì)將緩存里的數(shù)據(jù)進(jìn)行存儲(chǔ)到文件
-q 是安靜模式,不會(huì)打印出任何提示語(yǔ)句表明在錄制你的命令,這個(gè)參數(shù)很好的在后臺(tái)進(jìn)行默認(rèn)記錄
-t 是將時(shí)間數(shù)據(jù)輸出到標(biāo)準(zhǔn)錯(cuò)誤文件,使用scriptreplay播放時(shí)候也會(huì)使用這個(gè)文件進(jìn)行時(shí)間
再看一下scriptreplay的使用幫助說(shuō)明:
[root@gz--vm-workstation-0001 ~]# scriptreplay --help

常用的參數(shù)說(shuō)明:
-t 是對(duì)應(yīng)的存儲(chǔ)的時(shí)間文件,也就是下面將提到的RecordCommand.time
-s 對(duì)應(yīng)的是緩存的session記錄文件,也就是下面提到的RecordCommand.session
- 命令例子說(shuō)明
- script
我們要記錄操作的終端進(jìn)行操作,在shell命令行輸入
[root@gz--vm-workstation-0001 ~]# script -t 2>/tmp/RecordCommand.time -af /tmp/RecordCommand.session
- script

沒(méi)添加 -q 參數(shù),就把 script started,file ****這句話打印出來(lái),如果添加 -q 參數(shù)就沒(méi)有提示這句話,建議在生產(chǎn)環(huán)境添加 -q 進(jìn)行屏蔽打印出這類信息

這樣加-q參數(shù)就屏蔽了啟動(dòng)提示語(yǔ)了
- scriptreplay
下面我們就可以使用scriptreplay來(lái)進(jìn)行播放我們的小電影了
[root@gz--vm-workstation-0001 ~]#scriptreplay -t
/tmp/RecordCommand.time -s /tmp/RecordCommand.session
- 或者可以做成一個(gè)shell腳本,不用一個(gè)一個(gè)命令這樣敲,直接運(yùn)行進(jìn)行記錄或者直接播放,寫(xiě)這個(gè)腳本就幾句代碼,相信你們可以的
-
下面還說(shuō)一個(gè)script在實(shí)際中使用,它結(jié)合mkifo可以進(jìn)行實(shí)時(shí)播放直播,就是你在敲命令的時(shí)候別人可以通過(guò)另一個(gè)窗口看到,在教學(xué)或者監(jiān)督部門(mén)同事在操作重要步驟時(shí)候有很好的作用
先說(shuō)明一下mkfifo命令
mkfifo 使用指定的文件名創(chuàng)建FIFO(也稱為"命名管道")."FIFO"是一種特殊的文件類型,它允許獨(dú)立的進(jìn)程通訊. 一個(gè)進(jìn)程打開(kāi)FIFO文件進(jìn)行寫(xiě)操作,而另一個(gè)進(jìn)程對(duì)之進(jìn)行讀操作, 然后數(shù)據(jù)便可以如同在shell或者其它地方常見(jiàn)的的匿名管道一樣流線執(zhí)行.
當(dāng)你想進(jìn)行廣播讓別人看到你操作時(shí)候,就可以在linux下面/tmp目錄(目錄自己定義,個(gè)人建議而已)使用mkfifo 創(chuàng)建一個(gè)文件,并且使用script命令啟動(dòng)
mkfifo /tmp/TestMkfifo.log;script -f /tmp/TestMkfifo.log
這樣就啟動(dòng)完成了,其他人在其他窗口或者終端進(jìn)行登陸這臺(tái)服務(wù)器,并且切換到/tmp目錄下,執(zhí)行命令 cat /tmp/TestMkfifo.log ,這樣在他所在的窗口就可以看到你操作的任何操作并且實(shí)時(shí)在他的窗口進(jìn)行顯示