一、日志分类
1)操作系统常用日志及目录
2)应用服务器日志
二、日志查看
1)静态日志:文件内容少cat, 文件内容多:more /less
2)动态日志:tail
最常用:tail -f 文件名(默认显示文件最后10行),若此时应用系统正在操作中,日志动态的往下显示
显示最后几行: tail -100f 文件名(显示文件最后100行)
三、日志搜索定位
1)按关键字搜索:
关键字搜索并显示行号: cat -n 文件名 | grep '关键字' (搜索出关键字内容且显示关键字所在行, n参数为显示行号)
方式a: 根据关键字所在行查看内容: less -N -m 文件名 (N显示行号,m显示文件内容百分比, 注意:停止less命令用q )
方式b: 根据关键字所在行号,从第n行开始查起: more +数字 文件名(数字就是从第几行开始查起),定位效率高
2)按时间段搜索:
截取单个时间点日志:
grep '时间戳' 日志文件名
例如: 截取2022年4月20日 15:47 的日志: grep '2022-04-20 15:47' kart.log;
截取时间段日志:
grep '时间戳正则' 日志文件名
例如:截取2022年4月20日 15:47-15:49的日志: grep '2022-04-20 15:4[7-9]' kar.log
四、日志提取保存
方式a. 将截取内容追加到新文件中,且清空新文件原有内容用> : grep '2022-04-20 15:47' kart.log > new.log
方式b.将截取内容追加到新文件末尾,不清空新文件原有内容用>>: grep '2022-04-20 15:47' kart.log >> new.log
五、日志定期操作
日志定期操作=日志操作shell脚本+定时任务设置
1)日志定期备份: 定期复制单个指定文件
#!/bin/bash
backpath='/tmp' #日志备份到该目录下,定义变量用单引号
echo '日志备份到该目录下:'${backpath} #控制台打印备份目录
mylog='/apache-tomcat-7.0.96/apache-tomcat-7.0.96/logs/catalina.out' #日志源目录
echo "日志源目录:${mylog}" #控制台打印日志源目录
#打印时间戳,时间戳加号前有空格,意思是以这样的格式输出
echo '获取当前时间的年月日时间戳:'$(date +%Y%m%d)
echo '获取当前时间的年月日时分秒时间戳:'$(date +%Y%m%d%H%M%S)
#将源目录日志复制到日志备份目录下,并以年月日时分秒的格式
cp ${mylog} ${backpath}/$(date +%Y%m%d%H%M%S)_catalina.out
#打印备份后的日志文件名称
echo '备份的日志信息:'${backpath}/$(date +%Y%m%d)_catalina.out
2)日志定期删除
#!/bin/bash
#删除指定目录下的以manager.开头,以.log结尾的30天前的日志文件
find /apache-tomcat-7.0.96/apache-tomcat-7.0.96/logs -mtime +30 -name "manager.*.log" -exec rm -rf {} \;
#-rf与{}之间有空格,{}与\之间有空格,\与;之间没有空格,即:-rf+空格+{}+空格+\+;
3)linux定时任务设置
#定时任务设置命令crontab ,参数l代表系统已设置的定时任务有哪些,e代表新建一个定时任务,编辑方式跟vi一样,r代表删除系统所有的定时任务,若要删除某个定时任务,需要编辑删除该任务信息并重启定时任务服务
#暂停所有定时任务:service crond stop
#定时任务设置格式:五颗星号+执行的定时shell脚本路径 ,如 * * * * * /root/test.sh , 每个星号从左到右代表 分、时、日、月、周。
#设置定时间隔,将其中星号替换成反斜杠+数字即可,例如每10分钟执行一次:/10 * * * * ;每天执行一次:* * /1 * * ; 默认五个星号代表每分钟执行一次;
#设置在指定的时间执行,如:在每天8点39分执行一次: 39 8 * * * date /root/test.sh
#将一台linux的日志文件备份到另外一台linux上,使用scp远程复制命令+ssh密钥(要想定期执行,可以两台机设置免密登录)