Debian系统日志清理实用技巧
若需快速释放空间,可直接删除或清空指定日志文件。常用命令如下:
du -sh /var/log/*(快速识别大日志文件);sudo truncate -s 0 /var/log/syslog、sudo truncate -s 0 /var/log/auth.log(适用于正在运行的日志文件);sudo rm /var/log/syslog.1、sudo rm /var/log/kern.log(删除旧日志文件)。Systemd的日志由journald服务管理,可通过以下命令高效清理:
journalctl --disk-usage(如显示“Disk usage is 5.2G”,则表示日志占用了5.2GB磁盘空间);journalctl --vacuum-time=3d(删除3天前的所有日志);journalctl --vacuum-time=2w(删除2周前的日志);journalctl --vacuum-size=500M(删除所有超过500MB的日志文件,保留最新的500MB);journalctl --vacuum-time=1d --file=/var/log/auth.log(仅清理auth.log服务3天前的日志)。logrotate是Debian自带的日志管理工具,可实现自动轮转、压缩、删除旧日志,避免手动操作麻烦。
sudo nano /etc/logrotate.conf,调整以下核心参数(根据需求选择):
daily(每天轮转)、weekly(每周轮转)、monthly(每月轮转);rotate 7(保留7个旧日志文件);compress(压缩旧日志,节省空间);missingok(日志文件丢失时不报错);notifempty(日志为空时不轮转);create 640 root adm(创建新日志文件时设置权限和所有者)。/etc/logrotate.d/目录下创建新文件(如/etc/logrotate.d/apache2),添加以下内容(以Apache为例):/var/log/apache2/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 640 root adm
}
其中delaycompress表示延迟压缩(保留最近一个未压缩的日志文件),避免压缩后的文件无法被某些服务读取。sudo logrotate -f /etc/logrotate.conf(强制执行一次轮转,用于测试配置是否正确);logrotate -d /etc/logrotate.d/apache2(模拟轮转过程,显示详细信息,不实际执行)。logrotate通常由cron每日自动运行(路径:/etc/cron.daily/logrotate),无需额外设置。通过修改journald配置文件,可从根源控制日志的生成和保留,避免日志文件无限增长。
sudo nano /etc/systemd/journald.conf,调整以下参数(取消注释并修改):
SystemMaxUse=50M(限制日志文件最大占用50MB);SystemKeepFree=1G(保留至少1GB的磁盘空闲空间);MaxRetentionSec=7day(日志保留7天);SystemMaxFileSize=100M(单个日志文件最大100MB)。sudo systemctl daemon-reload(重新加载systemd配置);sudo systemctl restart systemd-journald(重启日志服务)。journald会自动清理超过限制的旧日志,无需手动干预。通过cron设置定时任务,定期执行日志清理操作,确保日志管理常态化。
sudo crontab -e;auth.log和syslog):0 2 * * * find /var/log/auth.log* -type f -mtime +30 -exec rm -f {} \;
0 2 * * * find /var/log/syslog* -type f -mtime +30 -exec rm -f {} \;
或调用logrotate执行自动轮转:0 2 * * * /usr/sbin/logrotate /etc/logrotate.conf
保存后,cron会按设定时间自动执行任务,无需人工干预。