通常在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 demoscriptreplay -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 ]; thenexit
fi
参考了:https://mp.weixin.qq.com/s?timestamp=1562287017&src=3&ver=1&signature=lpConCv5A1HmW8WGApfR2GOkpRqUxGbg8PS-741zr7hVHahGnnMLS3XZiMXlmL6h655oN7RQYynw3udLEOBOq3Q5VkWD1RLUo7e*1jtQT0pLxYIimVPRFO6uDHcQ9JxCgtkD88xVD5FcxmRaHC9cewE6ezHwPyE1yXfaAPvf4y8=