效果展示:
如上图,优化后nohup.out日志文件按照日期进行展示。
思路: 编写脚本,每日凌晨将前一天的日志复制到备份文件夹,并按前一天日期进行命名,然后清空原始nohup日志,这样日志只记录当天的日志。
工具: Xshell、Xftp(非必须)
步骤:
- 创建备份文件夹并授权;
#创建备份文件夹,路径按自己路径更改
[root@localhost /]# mkdir -p /data/primeton/eos/nohuplog
#给文件夹授权
[root@localhost /]# chmod -R 777 /data/primeton/eos/nohuplog
注:
1.路径没再标识,自己按自己实际路径修改创建即可。
2.不授权会报错:permission denied,文件权限不足。不建议生产环境授777权限,权限太大,也有其他授权方法自己百度,我用的下面xftp,自己勾选权限,见下图
- 创建并编写脚本文件
[root@localhost /]# vi /data/primeton/eos/nohuplog/nohup.sh
#!/bin/sh
#获取前一天的日期
date=`date -d "yesterday" +%Y_%m_%d`
#复制原始nohup.out到备份目录,并以前一天的日期进行命名
cp /data/primeton/eos/nohup.out /data/primeton/eos/nohuplog/$date.out
#清空原始nohup.out中的内容
cat /dev/null > /data/primeton/eos/nohup.out
[root@localhost /]# chmod -R 777 /data/primeton/eos/nohuplog/nohup.sh
注:
1.该脚本文件也需要授权;
2.建议以上面方式创建脚本,我第一次是在本地windows系统创建nohup.sh,执行时报错:M: bad interpreter: No such file or directory。这是因为windows系统创建的sh脚本默认为dos格式,而Linux执行的是unix格式的脚本,不能对其识别。
解决方法:
[root@localhost /]# vi /data/primeton/eos/nohuplog/nohup.sh #打开文件
:set ff #查看格式,正确应为fileformat=unix,我的之前显示dos
:set ff=unix #更改成unix
- 编写系统任务计划
#编写计划
[root@localhost /]# vi /etc/crontab
0 0 * * * root /data/primeton/eos/nohuplog/nohup.sh #每天凌晨执行脚本
:wq! #保存并退出
#重启crond
[root@localhost /]# service crond restart
- 结束
结语:
初识sh,此方法仍有很多不足之处,希望大神批评指正,有问题欢迎交流学习,共同进步,谢谢!