如何限制系统日志的大小?
我的妈妈的电脑运行Ubuntu 12.04 LTS。 它一直工作得很好,但所有突然的系统日志都已经填满了。 填写我的意思是我刚刚删除了一个400GB大小的/var/log/syslog
。 是的 – 技嘉。
虽然我确信那里有一些有用的信息,但我不确定400GB是否可以筛选任何类型的信息。 令人惊讶的是它发生在8小时内 – 我在中午左右跑了df
,从那时到现在,她的驱动装满了30%(从不到70%到100%)。
可能导致这种情况的原因是什么?我能解决它吗?
编辑看起来像usb是罪犯:
Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157829] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157836] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157842] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157849] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157857] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157863] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157870] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157877] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157884] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use Sep 8 08:52:10 pamela-desktop kernel: [ 6198.157891] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
您应该找出导致大量消息的原因,就像您修复此问题然后修复大型日志文件一样。
但是,在此之前,您可以在下面的其中一个上放入日志轮换。
- 时间 (例如每天轮换)
- 大小 (例如,当文件达到10mb时旋转)
默认情况下,系统已在系统上设置此项: /etc/logrotate.d/rsyslog
/var/log/syslog { rotate 7 daily missingok notifempty delaycompress compress postrotate reload rsyslog >/dev/null 2>&1 || true endscript }
从中您可以看到它将每天旋转/ var / log / syslog文件并保留7个旋转文件的副本 。
您可以将其更改为在大小限制上旋转,例如1mb或减少它存储的副本数量。
警告:这不会解决您的问题的根本原因 ,但它会为您带来一些时间,因为它会阻止文件系统填满。
- 来源:/etc/logrotate.d/rsyslog
- 来源:man logrotate
我和Lexmark Pro915在两周内遇到了同样的问题。 我做了两件事,现在工作正常。 我重新安装了驱动程序。 (不要以为这是有帮助的。)我拿出了我正在使用的USB扩展,这使得总长度接近15’,并且可能不完全兼容。 我怀疑用于Linux系统的Lexmark驱动程序可能会检测到信号不佳或时间不合适的信号,并希望每天100亿次告诉您这一信号。 尝试以某种方式改善您的连接。
Logrotate和类似的解决方案对我没有帮助。 Kern.log和syslog一起每天记录超过1TB! 如果您可以将其设置为每12分钟运行一次,Logrotate可能会有所帮助。
限制logrotate的大小
打开/etc/logrotate.d/syslog
配置文件
sudo nano /etc/logrotate.d/syslog
该文件看起来很…… 喜欢
/var/log/syslog { rotate 7 daily missingok notifempty delaycompress compress postrotate /usr/lib/rsyslog/rsyslog-rotate endscript } .... ...
在括号中添加例如size 100k
的size 100k
。 之后它应该看起来像:
/var/log/syslog { rotate 7 size 100k daily missingok notifempty delaycompress compress postrotate /usr/lib/rsyslog/rsyslog-rotate endscript }
请注意,这限制了旋转文件的文件大小,而不是实际的syslog文件。 保存文件。 下次logrotate chron作业启动时,它将限制旋转日志的大小。
限制当前syslog的大小
要限制/var/log/syslog
的大小,必须编辑/etc/rsyslog.d/50-default.conf
,并设置固定的日志大小。
通过更改/etc/rsyslog.d/50-default.conf
的以下行添加或修改此设置:
.*;auth,authpriv.none -/var/log/syslog
这里是rsyslog手册的摘录:
输出通道通过$ outchannel指令定义。 它的语法如下:$ outchannel name,file-name,max-size,action-on-max-size name是输出通道的名称(不是文件),file-name是要写入的文件名,max-size最大允许大小和action-on-max-size在达到最大大小时发出的命令。 此命令始终只有一个参数。 二进制文件是第一个空格之前的action-on-max-size的一部分,它的参数是该空间后面的所有内容。 请注意,在将日志消息写入文件之前,将查询max-size。 因此,请确保将此限制设置得相当低,以便任何消息都适合。 对于当前版本,将其设置为比预期低1k是有帮助的。 max-size必须始终以字节为单位指定 – 在此开发阶段没有特殊符号(如1k,1m,…)。 请记住,$ outchannel只定义了一个带有“name”的频道。 它不会激活它。 为此,您必须使用选择线(见下文)。 该选择器行包括频道名称和前面的$符号。 样本可能是: 。 :omfile:$ mychannel在当前forms中,输出通道主要提供对输出文件进行大小限制的function。 为此,请指定最大大小。 达到此大小时,rsyslogd将执行action-on-max-size命令,然后重新打开该文件并重试。 该命令应该类似于日志轮换脚本或类似的东西。
如果没有action-on-max-size命令或命令没有解决问题,则文件将被关闭,并且永远不会被rsyslogd重新打开(当然,除非通过huping)。 当我们第一次遇到文件大于2gb的严重问题时,这个逻辑被集成,这可能导致rsyslogd转储核心。 在这种情况下,停止写入单个文件更合适。 同时,rsyslogd已被修复为支持大于2GB的文件,但显然仅在文件系统和操作系统版本上这样做。 因此,强制执行2gb文件大小限制仍然有意义。
这里最大尺寸为1MB,将此行放在*.*; ...
之前*.*; ...
*.*; ...
行
$outchannel mysyslog,/var/log/syslog,1048576
并改变*.*; ...
*.*; ...
进入
*.*;auth,authpriv.none :omfile:$mysyslog
重启rsyslogd
sudo service rsyslog restart