and*_*tks 16 ubuntu syslog ubuntu-14.04
登录到我的 Ubuntu 机器时,我收到一条警告,指出我的磁盘空间不足。回溯,我发现是系统日志,尤其是 kern.log(s) 占用了我的 1TB 磁盘。
-rw-r----- 1 syslog adm 240G Feb 25 14:22 kern.log
-rw-r----- 1 syslog adm 516G Feb 21 07:59 kern.log.1
-rw-r----- 1 syslog adm 1.1K Feb 15 07:39 kern.log.2.gz
-rw-r----- 1 syslog adm 19K Feb 7 07:56 kern.log.3.gz
-rw-r----- 1 syslog adm 37K Feb 1 07:45 kern.log.4.gz
-rw-r----- 1 syslog adm 23G Feb 25 14:52 syslog
-rw-r----- 1 syslog adm 25G Feb 25 08:11 syslog.1
-rw-r----- 1 syslog adm 1.6G Feb 24 07:49 syslog.2.gz
-rw-r----- 1 syslog adm 1.7G Feb 23 08:18 syslog.3.gz
-rw-r----- 1 syslog adm 3.4G Feb 22 08:19 syslog.4.gz
-rw-r----- 1 syslog adm 3.6G Feb 21 07:59 syslog.5.gz
-rw-r----- 1 syslog adm 6.9G Feb 20 07:38 syslog.6.gz
-rw-r----- 1 syslog adm 7.3G Feb 19 07:36 syslog.7.gz
Run Code Online (Sandbox Code Playgroud)
从上面的片段中,您可以轻松地发现 kern.log 和 kern.log.1 占用了我 1TB 磁盘的 80%。我可以通过删除文件来获得空间,但我认为它不会解决问题。
有没有人知道这个问题可能是什么?我看到您可以通过以下方式获取日志记录级别:
cat /proc/sys/kernel/printk
Run Code Online (Sandbox Code Playgroud)
我得到
4 4 1 7
Run Code Online (Sandbox Code Playgroud)
asc*_*nts 58
这是一个老问题,但前两个答案都不是很好的解决方案:
logrotate),磁盘问题就会消失,而且您的系统可能会继续写入日志并在您弄清楚潜在问题之前填满您的磁盘。syslog会使跟踪未来问题变得更加困难!相反,这是一种更安全的方法,可让您在回收磁盘空间的同时保留日志文件,同时阻止日志文件再次执行此操作。
> /var/log/syslog(包括>)来清除它们。为此,您可能需要成为 root 用户,在这种情况下,输入sudo su、您的密码,然后输入上述命令)。systemctl restart syslog或service syslog restart)。logrotate. 在这种情况下,您可以编辑配置sudo nano /etc/logrotate.d/rsyslog并添加一行:/var/log/syslog
{
rotate 7
daily
maxsize 1G # add this line
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
Run Code Online (Sandbox Code Playgroud)
syslog在 1 天后或文件变为 1GB(以先到者为准)后“旋转”(即,创建新的日志文件并存档以前的日志文件)。请注意,这rotate 7意味着您的系统将只保留 7 个总syslog备份,因此它只能占用 7GB 的空间maxsize、rotate N和其他设置来自定义您的日志——使用该命令man logrotate可以查看更多信息。kern.log,内核事件、auth.log身份验证事件等)。此设置将使每个其他日志文件总共只占用 4GB。:...
{
rotate 4
weekly
maxsize 1G
...
}
Run Code Online (Sandbox Code Playgroud)
这将允许您的系统在不填满磁盘的情况下保持记录事件。
Jak*_*evi 11
logrotatelogrotate:sudo nano /etc/logrotate.d/rsyslog
Run Code Online (Sandbox Code Playgroud)
syslog、kern.log)下,如果没有配置,则添加如下所示的配置,否则修改现有配置以如下所示的配置man logrotate并向下滚动到DIRECTIVES这些指令的说明部分size 100M,其中100M可以根据您希望日志文件占用的最大大小进行修改,并确保没有基于时间的轮换指令, EG daily,weekly等{
rotate 7
size 100M
missingok
ifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
Run Code Online (Sandbox Code Playgroud)
cron,默认情况下每天进行一次sudo mv /etc/cron.daily/logrotate /etc/cron.hourly/logrotate
Run Code Online (Sandbox Code Playgroud)
cron脚本可能logrotate被禁用以支持systemd计时器cron脚本logrotate不会被禁用以支持systemd计时器,如下所示:
sudo nano /etc/cron.hourly/logrotate的内容(或者如果您之前没有移动过脚本)cronlogrotatesudo nano /etc/cron.daily/logrotate#在每行开头放置 来注释掉它们,或者完全删除这些行:# skip in favour of systemd timer
if [ -d /run/systemd/system ]; then
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
sudo logrotate --force --verbose /etc/logrotate.conf
Run Code Online (Sandbox Code Playgroud)
sudo logrotate --force --debug /etc/logrotate.conf
Run Code Online (Sandbox Code Playgroud)
/var/log/journal文件夹也变得很大,根据这个答案,你可以使用以下命令清除它:sudo journalctl --vacuum-size=100M
Run Code Online (Sandbox Code Playgroud)
logrotate由 调用时自动发生cron,请输入命令sudo nano /etc/cron.hourly/logrotate(或者sudo nano /etc/cron.daily/logrotate如果您之前没有移动脚本)并插入该行journalctl --vacuum-size=100M(注意不包括sudo)小智 5
你检查过这些文件的内容吗?您的服务器显然发生了一些事情,导致生成事件。解决导致该问题的任何问题,您的日志应该会恢复到正常大小。
要临时解决问题,请键入
echo "" > /var/log/kern.log
echo "" > /var/log/syslog
service syslog restart
journalctl --vacuum-size=50M
Run Code Online (Sandbox Code Playgroud)
为此sudo su,您需要成为 root 用户:输入,您的密码,然后输入上述命令
| 归档时间: |
|
| 查看次数: |
35948 次 |
| 最近记录: |