linux对nohup日志进行定时拆分并且删除~持续补充
目录1.值对nohup文件过大的问题2.实现原理3.创建linux定时任务由于java部署linux上使用nohup命令进行jar包的部署,详细请移步查看nohup java -jar jar项目名称>> ./log/nohup.out 2>&1 &会把项目的日志输出在当前目录的log文件中名称nohup.out1.值对nohup文件过大的问题针对运行jar指定输
由于java部署linux上使用nohup命令进行jar包的部署,详细请移步 查看
nohup java -jar jar项目名称 >> ./log/nohup.out 2>&1 &
会把项目的日志输出在当前目录的log文件中名称nohup.out
1.值对nohup文件过大的问题
针对运行jar指定输出格式是nohup.out文件随着时间变长文件的大小也会变得很大,由于公司的项目没有进行按日期分割nohup.out到现在大小差不多7个G了,伴随而来的问题也比较明显,当项目出现问题进行排错通过grep命令进行查找关键错误内容就会花费很长时间进行搜索
2.实现原理
我们通过定时备份nohup文件按照日期来保存日志信息,然后在把nohup文件清空,来实现记录当天的数据.
首先我们创建一个.sh文件touch命令创建
通过ll
命令查看文件的权限因为没有x所以没有可执行权限我们通过chmod
命令添加权限
chmod
命令可以用数字来表示权限如:chmod 777 file
输入命令修改权限:chmod 777 splitnohup.sh
通过pwd获取当前路径,复制路径后面有用
vi 编辑文件添加命令行
#!/bin/sh
#获取前一天的日期
date=`date -d "yesterday" +%Y_%m_%d`
#复制原始nohup.out到备份目录,并以前一天的日期进行命名
cp /home/admin/log/nohup.out /home/admin/log/$date.log
#清空原始nohup.out中的内容
cat /dev/null > /home/admin/log/nohup.out
wq保存退出
3.创建linux定时任务
我们创建好了可执行文件我们要让他运行才可以,不然没有效果,我们需要创建linux的定时任务。
编写系统任务计划
输入 vi /etc/crontab
添加好命令后wq保存退出
重启crond服务:service crond restart
4.补充
12-14:日志拆分过多后,虽然方便了排查当天数据,但是文件过多磁盘数据就会变小了,我们应该把多少天之前的日志给删除掉.
使用命令 find 文件路径 -mtime +3 -name '*.log'
解析:
文件路径:需要查询的路径 不添加表示当前目录
-mtime:标志写法
+3:查询3天前的文件 数字代表天数
-name:文件名称符合
‘*.log’:希望查找的数据类型, *表示任何是.log的文件都查询出来
既然可以查询出来那么我们把12-6号的日志给删除掉
使用以下命令find -mtime +6 -name '*.log' -exec rm -rf {} \;
在原基础上添加-exec rm -rf {} \;
执行后删除
可以看出没有12-6的日志文件了,因为他是6天前的文件所以会被查询出来删除掉
那么我们现在把测试好的命令添加到之前拆分日志的脚本里面
find -mtime +15 -name '*.log' -exec rm -rf {} \;
wq保存退出,这样每天凌晨就会把15天前的日志进行删除
注意:
记得使用命令查询下crontab是否已经把我们的定时任务添加
crontab -l
可以看出有2个定时任务
如果是出现no crontab for root
则表示添加不成功
如果你已经在 /etc/crontab
文件设置了定时命令,但是在crontab -l中没有看见对应的任务,就像我这样.
已经运行了重启crond服务:service crond restart
输入命令查看任务:crontab -l
显示还是没有任务,这样我们的脚本就不会运行
补救方式:
使用命令:
crontab -e
把我们需要运行的脚本粘贴进去,光标处按i
进入输入模式,然后在把我们的命令粘贴进去
然后按esc退出输入模式然后在屏幕最下面输入:wq
保存并且退出
然后在使用命令查看crontab -l
到这里就ok了
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)