如何清理系统日志并保留最近7天的日志?
美国、香港服务器
如何清理系统日志并保留最近7天的日志?
11-07 来源:
一、临时执行:清理,只保留最近 7 天日志(立即生效)
sudo journalctl --vacuum-time=7d
执行后会自动删除 7 天之前的 systemd 日志,**不会删除正在写入的日志**。
查看当前日志占用:
journalctl --disk-usage
二、永久配置:以后自动只保留 7 天日志(推荐服务器用)
1. 编辑 journald 配置文件
sudo nano /etc/systemd/journald.conf
找到这一行:
#SystemMaxUse=
#SystemMaxFileSize=
#MaxRetentionSec=
修改为:
MaxRetentionSec=7day
SystemMaxUse=200M
`MaxRetentionSec=7day` 日志最多保留 7 天;`SystemMaxUse=200M` 同时限制总大小上限,防止日志爆盘,两个条件哪个先触发就按哪个执行。
2. 保存退出(nano:Ctrl+O 回车保存,Ctrl+X 退出)
3. 重启日志服务生效
sudo systemctl restart systemd-journald
### 三、传统 syslog 日志(/var/log 下的 rsyslog 日志,Nginx/PHP 等程序日志)
journalctl 只管 systemd 日志,网站、Nginx 等日志由 `logrotate` 轮转,Ubuntu 默认自带 logrotate。
查看 logrotate 配置:
cat /etc/logrotate.conf
如果要统一设置保留 7 份日志,修改全局配置:
sudo nano /etc/logrotate.conf
找到 `rotate` 参数,改成:
rotate 7
含义:保留最近 7 个轮转日志文件。
单个服务(nginx)也可以单独在 `/etc/logrotate.d/nginx` 里单独设置 rotate,优先级高于全局。
测试 logrotate 是否正常:
sudo logrotate -d /etc/logrotate.conf
### 四、区分两个日志,别搞混
1. **journald 日志(systemd)**:`journalctl` 管理,存系统服务启动、内核报错
2. **应用日志(Nginx、MySQL 等)**:`/var/log/` 目录,由 logrotate 轮转
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快