登录到我的Ubuntu机器,我收到一个警告,我正在耗尽磁盘空间。追溯过去,我发现是系统日志,尤其是kern.log占用了我的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
从上面的片段中,您可以很容易地发现kern.log和kern.log.1占用了我的1TB磁盘的80%。我可以通过删除文件来获得空间,但我认为这不会解决问题。
有没有人知道这个问题可能是什么?我看到您可以通过以下方法获得日志记录级别:
cat /proc/sys/kernel/printk
我得到了
4 4 1 7
发布于 2016-02-26 18:11:50
你查过那些文件的内容了吗?很明显,您的服务器发生了一些事情,导致事件被生成。解决导致这一问题的任何问题,您的日志应该恢复到正常大小。
若要临时解决问题,请键入
echo "" > /var/log/kern.log
echo "" > /var/log/syslog
service syslog restart
journalctl --vacuum-size=50M
您需要成为根用户:输入sudo su
,密码,然后输入上面的命令
发布于 2020-06-20 18:25:57
这是一个老问题,但前两个答案都不是很好的解决办法:
logrotate
),那么所接受的答案并不能解释为什么磁盘问题会消失,而且您的系统可能会一直写入日志并在您找出根本问题之前填满您的磁盘。syslog
会使跟踪未来问题变得更加困难!相反,这里有一个更安全的方法,允许您在回收磁盘空间的同时保留日志文件,同时也可以阻止日志文件再次这样做。
> /var/log/syslog
(包括>
)清除它们。您可能需要成为根用户,在这种情况下输入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
}
syslog
“旋转”(即,创建一个新的日志文件并将前一个日志文件存档),或者在该文件成为1GB之后(以第一位为准)。请注意,rotate 7
意味着您的系统将只保留7次总的syslog
备份,因此它只能占用7GB的空间。maxsize
、rotate N
和其他设置以自定义日志--使用命令man logrotate
查看更多信息。kern.log
用于内核事件,auth.log
用于身份验证事件,等等)。此设置将使每个其他日志文件总共只占用4GB:...
{
rotate 4
weekly
maxsize 1G
...
}
这将允许您的系统在不填充磁盘的情况下继续记录事件。
发布于 2021-10-06 12:25:10
logrotate
处理。logrotate
配置:sudo nano /etc/logrotate.d/rsyslog
man logrotate
并向下滚动到DIRECTIVES
部分以获得这些指令的说明。size 100M
行,其中可以根据您希望日志文件占用的最大大小修改100M
,并确保没有基于时间的旋转指令、EG daily
、weekly
等。{
rotate 7
size 100M
missingok
ifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
cron
安排,默认情况下每天进行。sudo mv /etc/cron.daily/logrotate /etc/cron.hourly/logrotate
cron
的logrotate
脚本以支持systemd
计时器。logrotate
的logrotate
脚本不会被禁用以支持systemd
计时器,如下所示:sudo nano /etc/cron.hourly/logrotate
查看用于logrotate
的cron
脚本的内容(如果以前没有移动脚本,则输入sudo nano /etc/cron.daily/logrotate
)#
来注释它们,或者完全删除这些行:# skip in favour of systemd timer
if [ -d /run/systemd/system ]; then
exit 0
fi
sudo logrotate --force --verbose /etc/logrotate.conf
sudo logrotate --force --debug /etc/logrotate.conf
/var/log/journal
文件夹也变得非常大,根据这个答案,您可以使用以下命令清除它:sudo journalctl --vacuum-size=100M
logrotate
被cron
调用时自动实现,请输入命令sudo nano /etc/cron.hourly/logrotate
(如果以前没有移动脚本,则输入sudo nano /etc/cron.daily/logrotate
)并插入行journalctl --vacuum-size=100M
(NB不包括sudo
)。https://stackoverflow.com/questions/35638219
复制相似问题