logrotate可实现linux日志自动轮转、压缩与清理。操作包括:确认安装与默认配置;为单应用创建独立配置;用全局模板统一管理多路径;手动验证配置;调整cron执行时机。

如果您的Linux系统中日志文件持续增长,占用大量磁盘空间且难以人工维护,则需要借助Logrotate工具实现自动轮转、压缩与清理。以下是配置Logrotate完成日志自动切割的具体操作步骤:
一、确认Logrotate是否已安装并查看默认配置
Logrotate通常预装于主流Linux发行版中,但需验证其存在性及主配置结构,确保后续自定义配置能被正确加载。
1、执行命令检查Logrotate版本:logrotate --version。
2、查看主配置文件路径:cat /etc/logrotate.conf,确认include指令是否启用(如存在 include /etc/logrotate.d)。
3、检查/etc/logrotate.d/目录是否存在且可写:ls -ld /etc/logrotate.d/。
二、为单个应用日志创建独立配置文件
在/etc/logrotate.d/目录下添加专用配置文件,可避免修改全局配置,提升可维护性与隔离性。
1、使用文本编辑器新建配置文件:sudo nano /etc/logrotate.d/myapp。
2、写入以下内容(以/var/log/myapp/app.log为例):
/var/log/myapp/app.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 644 root root
sharedscripts
postrotate
if systemctl is-active --quiet myapp.service; then
systemctl kill --signal=SIGHUP myapp.service
fi
endscript
}
三、使用全局配置模板统一管理多日志路径
当存在多个日志路径需遵循相同策略时,可在/etc/logrotate.conf中直接定义通配规则,减少重复配置。
1、编辑主配置文件:sudo nano /etc/logrotate.conf。
2、在include语句之后追加如下块:
/var/log/nginx/*.log /var/log/apache2/*.log {
weekly
rotate 12
compress
missingok
notifempty
create 640 root adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then
run-parts /etc/logrotate.d/httpd-prerotate
fi
endscript
}
四、手动触发Logrotate验证配置有效性
在部署新配置后,应强制运行一次Logrotate并启用调试模式,确认无语法错误且动作符合预期。
1、执行测试命令检查语法:sudo logrotate -d /etc/logrotate.conf。
2、模拟实际轮转过程(不真正移动或删除文件):sudo logrotate -v --dry-run /etc/logrotate.conf。
3、强制对指定配置文件执行一次轮转:sudo logrotate -f /etc/logrotate.d/myapp。
五、调整Logrotate定时任务执行时机
Logrotate默认由cron每日凌晨调用,若需变更执行时间或频率,需修改对应crontab条目。
1、查看当前系统级cron任务:sudo cat /etc/cron.daily/logrotate。
2、如需改为每4小时运行一次,先移除默认daily脚本:sudo rm /etc/cron.daily/logrotate。
3、编辑root用户的crontab:sudo crontab -e,添加行:0 */4 * * * /usr/sbin/logrotate /etc/logrotate.conf。
4、验证新任务是否加载:sudo crontab -l。










