Linux日志归档删除logrotate
在 Linux 系统中,定期归档和删除日志文件是一个常见的系统维护任务。可以使用 logrotate 工具和 cron 任务调度器来实现这个目标来实现这个目标。
1. 使用 logrotate 进行日志归档和删除
logrotate 是一个 Linux 系统自带的日志文件管理工具,它可以定期对日志文件进行轮转、压缩、删除等操作。
logrotate 的配置文件通常位于 /etc/logrotate.conf 和 /etc/logrotate.d/ 目录下。
可以创建一个新的配置文件,或者修改现有的配置文件。
假设日志文件位于 /var/log/myapp.log,您希望每天轮转日志文件,保留 7 天的日志,并压缩归档。
创建一个文件 /etc/logrotate.d/myapp,并添加以下内容
/var/log/myapp.log {
daily
rotate 7
compress
dateext
missingok
notifempty
}
- daily:每天轮转日志文件。
- rotate 7:保留 7 个轮转的日志文件。
- compress:压缩归档的日志文件。
- dateext:使用日期作为归档日志文件的扩展名。
- missingok:如果日志文件不存在,不报错。
- notifempty:如果日志文件为空,不进行轮转。
2. 使用 cron 进行任务调度
cron 是一个 Linux 系统自带的任务调度器,它可以定期执行指定的命令。
cron 的配置文件位于 /etc/crontab 和 /etc/cron.d/ 目录下。
您可以使用 crontab -e 命令编辑当前用户的 cron 配置文件。
假设希望每天凌晨 1 点执行 logrotate。
使用 crontab -e 命令,并添加以下内容:
0 1 * * * /usr/sbin/logrotate /etc/logrotate.d/myapp
cron 表达式解释:
- 0 1 * * *:表示每天凌晨 1 点。
- /usr/sbin/logrotate /etc/logrotate.d/myapp:表示要执行的命令。
cron 表达式语法:
分钟 小时 日期 月份 星期 命令
确保 cron 服务正在运行systemctl status cron
如果服务没有运行,可以使用以下命令启动 systemctl start cron
补充
想要快速轮转测试
修改时间
# date
Thu Feb 27 09:58:47 CST 2025
# date -s "2025-2-28 09:57:19"
# 手动执行轮转文件
# logrotate -v /etc/logrotate.d/$xxx

浙公网安备 33010602011771号