通常在linux查看歷史操作信息,都是查看日誌文件,Linux的日誌文件一般都保存在/var/log文件夾下:
用如下命令即可查看:
cat filename 查看日誌,會打開整個文件,直接跑到最後面
tac filename 查看日誌,會打開整個文件,倒序顯示,不常用
more filename 查看日誌,可以上下翻頁,上下行移動顯示
less filename 查看日誌,和more命令類似,但不能往回翻頁
tail -f filename 查看文件,實時顯示最後一頁
vim filename 查看或編輯文件
將實時日誌打印到文件newlog.log內,方便查找
執行命令: tail -f nohup.out >newlog.log
備註:newlog.log文件可以不存在,命令執行時會自動新建
查看日誌文件的確可以檢查操作Linux過程中發生的錯誤,但是有時候,我們更想直觀地查看屏顯信息。
查看屏顯信息可以使用tee指令:
tee [-ai][--help][--version][文件...]
-a或--append 附加到既有文件的後面,而非覆蓋它.
-i或--ignore-interrupts 忽略中斷信號。
--help 在線幫助。
--version 顯示版本信息。
例如:
tee -a ./screen.log #把屏顯的信息保存到screen.log文件中
tee也可以實現同時向多個文件複製信息:
tee file1 file2 #在兩個文件中複製內容
單獨使用tee的時候,會在命令下面出現待輸入的位置,這樣就無法輸入其他命令。一般是這麼使用,如要保存ll輸出的屏顯:
ll | tee -a ./screen.log
查看輸出結果:
但是使用tee只能看到命令操作後輸出的結果,實在是很雞肋,沒啥大用。要是可以查看輸入的命令就要方便很多了。
要同時記錄輸入的命令和命令執行的輸出屏顯,可以使用script
和 scriptreplay
,
爲了可以實現按照時間順序輸出命令的執行屏顯,script需要保存兩個文件:一個是記錄時間線,一個是記錄屏顯。然後用scriptreplay復現記錄的命令執行過程,還可以實現慢速播放和加速播放。具體實現如下:
script的操作:
script -t 2>time.file -a scriptfile
執行完這個命令,接下來的任何操作都會被記錄到time.file、scriptfile兩個文件裏,這兩個文件可以自動新建。
time.file用來記錄時間線;
scriptfile
是命令執行記錄文件,記錄下執行是哪些命令。
加上-q, - -quiet
參數可以使script命令以靜默模式運行,不顯示script啓動和exit的命令,用戶可以完全察覺不到在錄屏。
像這樣:
script -q -t 2>time.file -a scriptfile
要停下來,只用按下按下組合鍵 Ctrl+D
結束錄製,執行exit
命令也行。
script常用的參數
-t 指明輸出錄製的時間數據
-f 如果需要在輸出到日誌文件的同時,也可以查看日誌文件的內容,可以使用 -f 參數。PS:可以用於教學,兩個命令行接-f可以實時演示
-a 輸出錄製的文件,在現有內容上追加新的內容
-q 可以使script命令以靜默模式運行
然後用scriptreplay來播放錄製的過程:兩個文件,第一個是時間線文件,第二個是命令文件:
scriptreplay time.file scriptfile
添加這個參數-d, –divisor number
可以調整播放速度的倍數(可以是小數:放慢)。
如果需要實現實時顯示操作過程,可以使用 -f(--flush)刷新緩存。
script -f demo
scriptreplay -f demo
#如果不能用scriptreplay -f demo的話,可以用
tail -f demo
script其實也有類似tee的功能:只記錄當面命令的執行結果:
script -qa "file.out" -c "/root/hello.sh"
#把/root/hello.sh執行的結果保存到file.out
使用開機靜默啓動的script甚至可以實現監控用戶登陸的操作與實時監控。
mkdir -p /home/log/user_record
vim ~/.profile
在配置文件的末尾加上:
# 添加登陸時自動記錄
script -t -f -q 2>/home/log/user_record/$USER-$UID-`date +%Y%m%d%H%M%S`.time -a /home/log/user_record/$USER-$UID-`date +%Y%m%d%H%M%S`.his
if [ "$SHLVL" = 1 ]; then
exit
fi