通常在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