/var/log/syslog.1 => 60GB | 我似乎已经阻止了原因,但不知道如何干净地处理日志文件的大小

/var/log/syslog.1 => 60GB | 我似乎已经阻止了原因,但不知道如何干净地处理日志文件的大小

因此,基本上,gotop-cjbassi我为了监控目的而不断运行一个命令 ( ),该命令显然开始出现问题。经过验证,每次运行时,systemd-journald都会在 中连续写入此行/var/log/syslog

Apr 28 00:13:16 myHostName kernel: [46316.136892] audit: type=1400 audit(1588025596.856:20376494): apparmor="DENIED" operation="open" profile="snap.gotop-cjbassi.gotop-cjbassi" name="/proc/286/cmdline" pid=101679 comm="ps" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0

目前占65GB (syslog.1基本上是文件系统上剩余的所有空间)。

我在网上看到过很多帖子(12) 讲述了这一点logrotate,但没有人解释如何使用它来简单地处理这种情况。(甚至不明白“旋转”是什么意思,它只是压缩文件但保留所有数据吗?如果是这样,那就不是一个解决方案)

我尝试阅读了一下手册,但它确实不太方便用户使用。无论如何,我在cd-ing into之后尝试了这个命令/var/log

logrotate -f syslog.1

据说是为了强制旋转。该命令似乎已成功运行。但没有尺寸变化。

我可以嗎cat /dev/null > syslog.1

如果是这样,我宁愿这样做:sed -i '/cjbassi/d' ./syslog.1但我试过了,sed显然在删除之前会存储一个临时文件,其中包含有关要删除的内容的信息。因此,这使我无法成功运行此命令,因为它需要存储与原始文件相同数量级的大小,这意味着多了几 GB,而我的文件系统无法处理,因为我已经满了

答案1

如果文件名为syslog.1,则表示它已被轮换。当前正在使用的日志文件为syslog

如果不需要,只需删除它。如果仍然需要,可以压缩它,但这也需要可用空间。由于文件应该压缩得很好,您可以尝试使用tmpfs(RAM 支持)。

如果您删除该文件但空间尚未释放,则表明有人仍打开了该文件。

答案2

> /var/log/syslog.1是的,如果您不关心日志文件中的内容,您可以。

如果您确实关心文件的其他内容,那么您可以grep -v snap.gotop-cjbassi.gotop-cjbassi > /var/log/syslogtemp && > /var/log/syslog.1 && mv /var/log/syslogtemp /var/log/syslog.1确保有足够的可用空间来存储常规日志行。

Logrotate 设置位于 /etc/logrotate.conf 和 /etc/logrotate.d/* 中

在您的情况下,相关设置可能位于 /etc/logrotate.d/rsyslog 中,看起来有点像这样:

{
  rotate 7
  daily
  missingok
  notifempty
  delaycompress
  compress
  postrotate
    /usr/lib/rsyslog/rsyslog-rotate
  endscript
}

由于选项 'delaycompress',logrotate 会将 syslog 旋转到 syslog.1 而不进行压缩。下次运行 logrotate 时,它​​会将 syslog 移动到 syslog.1 并将 syslog.1 压缩为 syslog.2.gz 。如果没有足够的磁盘空间来存放生成的 gz 文件,压缩当然会失败。

相关内容