很多时候,用nohup后台启动生成日志时,如果不进行分割,文件会越来越大,导致日志文件打开很慢,不方便问题的ji'shi定位和解决。
此文记录实际开发过程中,按照日期分割日志的操作步骤
一、首先写一个可执行的shell脚本,本次较为简单,建立一个名为nohup_log.sh,内容如下:
# !/bin/sh
# 拷贝日志文件到 昨天的log中
cp /usr/local/release/nohup.out /usr/local/release/logfile_`date -d yesterday +%Y%m%d`.log
# 清空nohup.out 日志
cat /dev/null > /usr/local/release/nohup.out
按大小
# !/bin/sh
# 拷贝日志文件到 昨天的log中
split -b 100m -d -a 4 /usr/local/release/nohup.out /usr/local/release/logfile_`date -d yesterday +%Y%m%d`.log
# 清空nohup.out 日志
cat /dev/null > /usr/local/release/nohup.out
二、先手动执行一下shell脚本
可能遇到的问题:
1、提示权限不够
解决办法:chmod 777 ./nohup_logfile.sh
2、提示“目标‘\r’不是目录”
原因分析: 在linux终端下,输出\r会什么都不显示,只是把光标移到行首
解决办法: 用vim打开sh脚本文件, 重新设置文件的格式
:set ff 然后回车 再重新设置下文件格式:
:set ff=unix 然后保存退出
:wq! 回车
三、加入定时任务
1、crontab -e
根据自己需要设置,定时执行的时间
#每5分钟执行一次
*/5 * * * * /usr/local/release/nohup_logfile.sh
#每天
0 0 * * * /usr/local/release/nohup_logfile.sh
保存并退出
2、使定时任务生效
service crond restart
3、查看是否生效
至此工作完成,日志生成量较大的,还需要根据大小进行分割的自行修改shell脚本后执行。
四、定期删除时间过久,释放空间的日志
需求:每天凌晨1点整执行一次脚本,删除Linux系统/root/logs/目录下且是30天前的.log日志文件。
实现:
0 1 * * * find /root/logs -mtime +30 -name '*.log' -exec rm -rf {} \;
保存退出,使其生效
- 文章链接: https://blog.zhangcun.store/2022/04/21/nohup-ding-shi-ri-zhi-fen-ge-an-ri-qi-he-da-xiao/
- 版权声明: 本网站所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!
你的赏识是我前进的动力
支付宝
微信