在CentOS系统中,使用crontab实现日志分割可以通过编写一个脚本来完成。以下是一个简单的示例,展示了如何使用crontab和logrotate工具来实现日志分割。
sudo yum install logrotate
logrotate.conf
的配置文件,用于定义日志分割的规则。例如,以下配置将每天分割/var/log/myapp.log文件,并保留7天的日志:/var/log/myapp.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root root
}
在这个配置中:
daily
表示每天分割日志。rotate 7
表示保留7天的日志。compress
表示压缩旧日志文件。missingok
表示如果日志文件不存在,不会产生错误。notifempty
表示如果日志文件为空,不进行分割。create 0640 root root
表示创建新的日志文件,权限为0640,属主和属组为root。sudo ln -s /path/to/logrotate.conf /etc/logrotate.d/myapp
将/path/to/logrotate.conf
替换为实际的配置文件路径。
rotate_logs.sh
的脚本,用于手动触发日志分割:#!/bin/bash
# 执行logrotate命令,指定配置文件
logrotate /etc/logrotate.d/myapp
# 可选:发送通知或其他操作
为脚本添加可执行权限:
chmod +x rotate_logs.sh
crontab -e
在打开的编辑器中,添加一行,例如每天凌晨1点执行日志分割脚本:
0 1 * * * /path/to/rotate_logs.sh >> /var/log/rotate_logs.log 2>&1
将/path/to/rotate_logs.sh
替换为实际的脚本路径。
现在,crontab将定期执行日志分割任务,根据配置文件的规则对日志进行分割和压缩。