温馨提示×

怎样清理centos apache日志

小樊
48
2026-09-21 09:58:48
栏目: 智能运维

在 CentOS 上清理 Apache 日志,常见做法有手动删除/截断、使用 logrotate、按时间清理等。下面按推荐程度说明。


一、先确认 Apache 日志位置(CentOS 常见路径)

# 查看 Apache 主配置
grep -i "ErrorLog" /etc/httpd/conf/httpd.conf
grep -i "CustomLog" /etc/httpd/conf/httpd.conf

常见日志路径:

  • 错误日志:/var/log/httpd/error_log
  • 访问日志:/var/log/httpd/access_log
  • 虚拟主机日志:/var/log/httpd/xxx-access_log

二、推荐方式:使用 logrotate(最安全 ✅)

CentOS 默认已为 Apache 配置 logrotate。

1. 查看配置

cat /etc/logrotate.d/httpd

典型内容:

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd > /dev/null 2>/dev/null || true
    endscript
}

2. 手动执行一次日志轮转(会清理旧日志)

logrotate -f /etc/logrotate.d/httpd

3. 查看已存在的旧日志

ls -lh /var/log/httpd/

例如:

access_log
access_log-20240101
access_log-20240108.gz

三、手动清理(不推荐,但可用 ⚠️)

方式 1:清空日志(不删除文件)

# 清空访问日志
: > /var/log/httpd/access_log

# 清空错误日志
: > /var/log/httpd/error_log

✅ 不会影响 Apache 运行


方式 2:直接删除旧日志

rm -f /var/log/httpd/*-2023*.gz

⚠️ 不要直接 rm access_log,否则 Apache 可能继续写已删除文件(需 reload)


四、删除后让 Apache 重新打开日志

如果直接删除了日志文件:

systemctl reload httpd

或

apachectl graceful

五、只保留最近 N 天日志(自动清理)

编辑 logrotate 配置(示例保留 30 天):

vi /etc/logrotate.d/httpd

增加:

rotate 30
daily

然后测试:

logrotate -d /etc/logrotate.d/httpd

六、按大小自动清理(示例)

/var/log/httpd/*log {
    size 100M
    rotate 10
    compress
    missingok
    notifempty
    sharedscripts
    postrotate
        systemctl reload httpd
    endscript
}

七、总结建议 ✅

场景 推荐方式
日常维护 logrotate
磁盘爆了 : > 日志文件
删除旧日志 logrotate + rotate
生产环境 不要直接 rm

如果你愿意,可以告诉我:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • Apache 是否用 yum 安装
  • 日志有多大 / 磁盘使用情况

我可以给你一条最合适的具体命令。

0 踩