CentOS 的日志文件集中存储在 /var/log/ 目录下,核心日志包括:
/var/log/httpd/access_log、Nginx的/var/log/nginx/error_log)通常位于对应服务的子目录中。journalctl 是 CentOS 7+ 系统默认的日志管理工具,用于查看和管理 systemd 生成的日志:
journalctl;journalctl -u sshd;journalctl --since "2025-01-01";journalctl -f;journalctl | grep 'error';journalctl --vacuum-time=1w;journalctl --vacuum-size=500M;echo "" > /var/log/journal/system.journal(需谨慎操作)。logrotate 是 CentOS 默认的日志轮转工具,用于自动压缩、删除旧日志,防止日志文件过大:
/etc/logrotate.conf,常用参数包括:
daily:每天轮转一次;rotate 7:保留7份旧日志;compress:压缩旧日志(如.gz格式);missingok:日志文件丢失时不报错;notifempty:日志为空时不轮转;create 640 root adm:创建新日志文件时设置权限(640)和所有者(root/adm)。/etc/logrotate.d/ 目录下创建配置文件(如myapp),示例:/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
}
delaycompress 表示延迟压缩(直到下一次轮转),避免压缩最新的日志。sudo logrotate -f /etc/logrotate.conf(强制轮转,即使未达到条件);tail -f /var/log/messages(系统日志会记录logrotate的操作)。对于非 journalctl 管理的日志文件(如/var/log/messages、/var/log/secure),可通过以下命令清理:
/var/log/messages):cat /dev/null > /var/log/messages;find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;
/var/log/btmp记录失败登录尝试):echo > /var/log/btmp;/var/log/lastlog):echo > /var/log/lastlog。通过降低日志级别,减少不必要的日志生成:
/etc/rsyslog.conf,调整服务日志级别(如将*.info改为*.warning,仅记录警告及以上级别的日志);/etc/systemd/journald.conf,设置:
SystemMaxUse=100M:限制日志文件最大使用100MB;MaxRetentionSec=1week:保留日志1周;Compress=yes:压缩旧日志。systemctl restart systemd-journald。通过 cron 定时运行清理脚本,实现自动化管理:
/usr/local/bin/log_cleanup.sh):#!/bin/bash
# 清空30天前的.log文件
find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;
# 清空journal日志(保留1周)
journalctl --vacuum-time=1w
chmod +x /usr/local/bin/log_cleanup.sh;crontab -e
添加以下内容:0 3 * * * /usr/local/bin/log_cleanup.sh
/var/log/secure、应用日志),防止数据丢失;/var/log/messages),可通过覆盖或清空方式释放空间;systemctl restart logrotate、systemctl restart systemd-journald)确保配置生效。