如何配置系统日志以减少磁盘占用?
美国、香港服务器
如何配置系统日志以减少磁盘占用?
11-07 来源:
## 一、journald 配置(重点,系统服务日志)
编辑配置文件
sudo nano /etc/systemd/journald.conf
修改下面几项(去掉前面 `#` 注释)
# 日志最长保留7天
MaxRetentionSec=7day
# 日志总容量上限,超过自动清理(按需改,比如100M/200M/500M)
SystemMaxUse=200M
# 单个日志文件最大
SystemMaxFileSize=50M
# 不持久化日志(可选:内存模式,重启丢失,磁盘很小;服务器不建议开)
# Storage=volatile
保存退出:`Ctrl+O` → 回车 → `Ctrl+X`
重启服务生效
sudo systemctl restart systemd-journald
立即清理旧日志(配置完执行一次)
sudo journalctl --vacuum-time=7d
查看当前占用:
journalctl --disk-usage
二、logrotate 配置(Nginx、MySQL、rsyslog 等应用日志)
方式 1:全局默认规则(所有日志统一)
sudo nano /etc/logrotate.conf
修改:
# 保留最近7份轮转日志
rotate 7
# 日志文件超过50M就切割
size 50M
# 压缩旧日志(省空间)
compress
# 延迟压缩,避免刚切完就压缩
delaycompress
含义:最多保留 7 个历史日志,超过大小自动切割,旧日志 gzip 压缩
### 方式 2:单独给 Nginx 设置(单独规则,优先级更高)
sudo nano /etc/logrotate.d/nginx
示例模板:
/var/log/nginx/*.log {
daily
rotate 7
size 50M
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
endscript
}
测试 logrotate 配置是否报错(重要!)
sudo logrotate -d /etc/logrotate.conf
`-d` 是调试模式,只预览、不实际切割日志,无报错再使用。
手动触发一次轮转
sudo logrotate -f /etc/logrotate.conf
三、额外可选优化(rsyslog 服务日志)
如果你装了 rsyslog:
sudo nano /etc/rsyslog.conf
可以关闭不需要的日志,比如注释掉一些不关心的模块,减少日志输出。
改完重启:
sudo systemctl restart rsyslog
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快