1. 使用logrotate工具(系统默认日志轮转工具)
logrotate是Debian系统管理日志轮转、压缩和删除的核心工具,可自动处理/var/log目录下的日志文件,避免磁盘空间耗尽。
/etc/logrotate.conf(全局配置文件),设置常用参数:daily(每天轮转)、rotate 7(保留7个旧日志)、compress(压缩旧日志)、missingok(日志丢失不报错)、notifempty(日志为空不轮转)、create 0640 root adm(创建新日志时设置权限和所有者)。/etc/logrotate.d/目录下创建或编辑服务配置文件(如rsyslog、apache2),针对特定日志路径设置策略。例如,/etc/logrotate.d/rsyslog文件可添加:/var/log/syslog { daily rotate 7 compress delaycompress missingok notifempty create 0640 root adm }delaycompress延迟压缩,直到下一次轮转;create指定新日志的权限和所有者)。sudo logrotate -f /etc/logrotate.conf命令(-f表示强制轮转)。2. 使用journalctl命令(systemd系统日志管理)
Debian 8及以上版本默认使用systemd,其日志由journalctl管理,可通过以下命令回收日志:
sudo journalctl --rotate(强制轮转当前日志文件,生成新的日志文件)。sudo journalctl --vacuum-time=2weeks(删除两周前的所有日志);也可指定天数(如--vacuum-time=7d)或小时(如--vacuum-time=12h)。sudo journalctl --vacuum-size=100M(删除超过100MB的日志,释放磁盘空间)。3. 手动清理日志文件(临时应急方案)
若需快速释放空间,可手动清空或删除日志文件,但需注意:手动操作可能影响logrotate的正常运行,建议仅在紧急情况下使用。
sudo truncate -s 0 /var/log/syslog(将syslog文件大小截断为0,保留文件但清空内容)。sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;(查找/var/log目录下所有.log结尾的文件并清空)。sudo rm /var/log/syslog(直接删除文件,需谨慎使用,可能导致日志丢失)。4. 配置rsyslog/syslog-ng实现高级日志回收
若需更灵活的日志管理(如按大小轮转、远程日志传输),可配置rsyslog或syslog-ng:
/etc/rsyslog.conf或/etc/rsyslog.d/50-default.conf,添加以下内容实现日志轮转:/var/log/syslog { rotate 7 daily missingok notifempty compress delaycompress postrotate /usr/lib/rsyslog/rsyslog-rotate endscript }postrotate指定轮转后执行的脚本,确保rsyslog重新打开日志文件);重启服务:sudo systemctl restart rsyslog。/etc/syslog-ng/syslog-ng.conf,添加以下内容实现日志轮转和压缩:destination d_syslog { file("/var/log/syslog" template("${ISODATE} ${HOST} ${LEVEL}: ${MESSAGE}\n")); rotate(7); compress(yes); create_dirs(yes); };rotate(7)保留7天日志,compress(yes)启用压缩);重启服务:sudo systemctl restart syslog-ng。