nohup 定时日志分割(按日期和大小)
发表于:2022-04-21 |
很多时候,用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 {} \;
保存退出,使其生效
上一篇:
Docker 构建支持中文环境的Alpine及大小优化
下一篇:
telnet批量测试端口脚本