如何限制系统日志的大小?


13

我的妈妈的计算机运行Ubuntu 12.04 LTS。它一直工作得很好,但是所有突然的系统日志都已装满。通过填满,我的意思是我刚刚删除了一个/var/log/syslog400GB的大小。是的-千兆字节。

虽然我确定其中有一些有用的信息,但是我不确定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

2
我要说的是,您应该尝试找出填充的内容,而不是限制大小。应该有很多重复的消息,尝试运行tail -n20 /var/log/syslog以查看最后20行。
mikewhatever 2012年

我也尝试冲水前档-似乎没有任何重复,但我会再看看
韦恩沃纳

因此,这似乎是“ demond_nscan”的问题,我在Google上找不到任何相关信息。 nscan是一个端口扫描应用程序,因此这可能是对其的修改(但我只是在理论上)。如果您不是要明确运行的应用程序,我建议您尝试查找可执行文件(如find / -iname demond_nscan),然后重命名/更改其权限,使其不可执行。(这样一来,如果它实际上对某件事很重要,那么您就不会丢失它,并且如果它是由别的东西启动的,您可能会注意到。此外,请检查crontab -l
Steve Kroon

1
demond_nscan看起来与Lexmark扫描驱动程序有关。
韦恩·沃纳

Answers:


12

您应该找出导致大量消息的原因,就好像您解决了此问题然后又修复了大日志文件一样。

但是,在此之前,您可以根据以下任一条件放置日志轮换。

  • 时间(例如每天旋转)
  • 大小(例如,文件达到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

2
这不会限制实际syslog的大小!
abu_bua

6

限制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 在括号中添加例如。之后,它应该如下所示:

/var/log/syslog
{
    rotate 7
    size 100k
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

请注意,这限制了旋转文件的文件大小,而不是实际的syslog文件。保存文件。下一次logrotate chron作业开始时,它将限制旋转后的日志的大小。

限制当前系统日志的大小

要限制的大小/var/log/syslog,您必须编辑/etc/rsyslog.d/50-default.conf,并设置固定的日志大小。

通过更改以下行来添加或修改此设置/etc/rsyslog.d/50-default.conf

.*;auth,authpriv.none       -/var/log/syslog

这是rsyslog手册的摘录:

输出通道通过$ outchannel指令定义。其语法如下:$ outchannel名称,文件名,最大大小,最大动作大小是输出通道的名称(不是文件),文件名是要写入的文件名,max-size和max-size会在达到最大大小时发出命令。此命令始终只有一个参数。二进制文件是第一个空格之前最大动作的一部分,其参数是该空格之后的所有内容。请注意,在将日志消息写入文件之前会查询max-size。因此,请确保将此限制设置得较低,以便适合任何消息。对于当前版本,将其设置为比预期低1k会有所帮助。max-size必须始终以字节为单位指定-没有特殊符号(例如1k,1m,…)在这个发展点上。请记住,$ outchannel仅使用“ name”定义一个通道。它不会激活它。为此,必须使用选择器行(请参见下文)。该选择器行包括通道名称以及其前面的$符号。一个示例可能是::omfile:$ mychannel以当前形式,输出通道主要提供限制输出文件大小的功能。为此,请指定最大大小。达到此大小后,rsyslogd将执行action-on-max-size命令,然后重新打开文件并重试。该命令应类似于日志轮换脚本或类似的内容。

如果没有action-on-max-size命令,或者该命令不能解决问题,则该文件将关闭,并且永远不会通过rsyslogd重新打开(当然,通过将其包围起来除外)。当我们第一次遇到2gb以上文件的严重问题时,此逻辑已集成,这可能导致rsyslogd转储核心。在这种情况下,停止写入单个文件更为合适。同时,rsyslogd已修复为支持2gb以上的文件,但显然仅在这样做的文件系统和操作系统版本上。因此,实施2gb的文件大小限制仍然有意义。

在这里,最大尺寸为1MB,把此行的前*.*; ...

$outchannel mysyslog,/var/log/syslog,1048576

并将*.*; ...行更改为

*.*;auth,authpriv.none  :omfile:$mysyslog

重新启动rsyslogd

sudo service rsyslog restart

0

我在Lexmark Pro915上遇到了同样的问题,持续了两个星期。我做了两件事,现在工作正常。我重新安装了驱动程序。(不要以为这有帮助。)我拿出了我正在使用的USB扩展名,该扩展名的总长度接近15',并且可能不完全兼容。我怀疑用于Linux系统的Lexmark驱动程序可能检测到不良或定时不良的信号,并想每天告诉您100亿次。尝试以某种方式改善您的连接。

Logrotate和类似的解决方案对我没有帮助。Kern.log和syslog一起每天记录超过1TB!如果可以将Logrotate设置为每十二分钟运行一次,则可能会有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.