返回顶部

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
posted @ 2025-02-25 09:53  十方央丶  阅读(133)  评论(0)    收藏  举报