承接上一个文档《js页面触发chargeRequest事件和Nginx获取日志信息》
利用shell脚本定时备份日志数据到HDFS上(适合日志数据比较少的时候)
时间命令
date +"%Y%m%d" 今天的日期date -d "1 day ago" +"%Y%m%d" 昨天的日期date -d "-1 day" +"%Y%m%d" 昨天的日期
获取昨天的日志:
mv access.log 20200128access.log
在nginx目录下创建一个目录:
mkdir scripts
![8d9e0fbdf26cef8e522753117b78da84.png](https://img-blog.csdnimg.cn/img_convert/8d9e0fbdf26cef8e522753117b78da84.png)
创建脚本:
vi cut_nginx_log.sh
授权
chmod 755 cut_nginx_log.sh
![7cd93d1eb971a452e5c264d0f6066604.png](https://img-blog.csdnimg.cn/img_convert/7cd93d1eb971a452e5c264d0f6066604.png)
代码编写
![70d797199c6c3c0a5f8d5a191f164e12.png](https://img-blog.csdnimg.cn/img_convert/70d797199c6c3c0a5f8d5a191f164e12.png)
测试执行
![16986d2dab6440942cb18aeff898a330.png](https://img-blog.csdnimg.cn/img_convert/16986d2dab6440942cb18aeff898a330.png)
日志剪切走了
![aa7594a7c18310db30d08eefe4b7435f.png](https://img-blog.csdnimg.cn/img_convert/aa7594a7c18310db30d08eefe4b7435f.png)
再创建一个脚本:
vi put_log_hdfs.sh
授权
chmod 755 put_log_hdfs.sh
![3197f24dbcff48bcb2f59de306b9a2e3.png](https://img-blog.csdnimg.cn/img_convert/3197f24dbcff48bcb2f59de306b9a2e3.png)
编写脚本内容
![d128536611f213f19c2031946b83a3ab.png](https://img-blog.csdnimg.cn/img_convert/d128536611f213f19c2031946b83a3ab.png)
测试执行
![f0eba9edd3de1cac371149d5d04e86fd.png](https://img-blog.csdnimg.cn/img_convert/f0eba9edd3de1cac371149d5d04e86fd.png)
可以看到HDFS上有数据
![5d805f2172e175447a885434172d956a.png](https://img-blog.csdnimg.cn/img_convert/5d805f2172e175447a885434172d956a.png)
再写一个脚本,分别调用两个脚本 total_put_and_cut_log.sh
授权
chmod 755 total_put_and_cut_log.sh
![98e72898b254687c1bb14dea7f30e1ec.png](https://img-blog.csdnimg.cn/img_convert/98e72898b254687c1bb14dea7f30e1ec.png)
第一个脚本调用完了之后
睡眠1分钟,让第一个脚本有充足的时间备份
再调用第二个脚本
测试执行
![906fafa99b1cafd514266716f6d8a02b.png](https://img-blog.csdnimg.cn/img_convert/906fafa99b1cafd514266716f6d8a02b.png)
这里因为刚刚已经上传了所以文件已经存在
![287519e4a86a212b7070e4c50fecfae8.png](https://img-blog.csdnimg.cn/img_convert/287519e4a86a212b7070e4c50fecfae8.png)
定时执行crontab:
crontab -e
00 00 * * * /bin/sh /user/local/nginx/logs/apps/nginx/logs/scripts/total_put_and_cut_log.sh
查看任务:crontab -l
需要重启crontab:
service crond restart