由于各种原因,我需要在 中检查计算机日志/var/log/syslog
,但这已成为一个小问题,因为我实际上无法查看该文件中的日志,因为每次打开它(无论我使用哪个程序)它都会崩溃。例如,如果我在nano
、gedit
、cat
或甚至主日志查看程序中打开它,我就会遇到这样的崩溃,因为文件中的数据太多而无法加载:
所以我真正的问题是,如何才能syslog
在不让查看器崩溃的情况下进行查看?我做错了什么吗?还是有更好的方法,大家都在用,而我不知道?
操作系统信息:
Description: Ubuntu 15.04
Release: 15.04
答案1
总结:
问题是由于文件var/log/syslog
非常大,kernel
尤其是定期ufw
转储大量日志。为了解决这个问题,我们需要在配置文件中UFW_AUDIT
设置LOGLEVEL
如下ufw
:low
ufw
/etc/ufw/ufw.conf
sudo sed -i '/^LOGLEVEL/s/=.*/=low/' /etc/ufw/ufw.conf
从man ufw
:
Loglevels above medium generate a lot of logging output, and may
quickly fill up your disk. Loglevel medium may generate a lot of
logging output on a busy system.
细节 :
导致错误的原因可能有很多
Stream has outstanding operation
所示。最常见的两种情况是文件太大而无法读取以及文件包含无法读取的异常内容。
首先我们考虑第一个原因,即文件太大(我将按照我们的步骤一步步介绍):
首先,我们需要检查其中有多少行
/var/log/syslog
,结果发现很不寻常:$ wc -l /var/log/syslog 1308061 /var/log/syslog
由于该文件有 1308061 行,相当大,我们需要检查其
logrorate
配置方式rsyslog
:sed -n '/\/var\/log\/syslog/,/^}$/p' /etc/logrotate.d/rsyslog
这表明/var/log/syslog
将每天轮换并删除超过一周的日志,这是默认设置。
接下来,我们需要
/var/log/syslog
使用以下命令检查哪个进程正在将大部分日志写入文件:less /var/log/syslog | tr -s ' ' | cut -d' ' -f5 | sort | uniq -c | sort -rn
这将按降序显示文件中写入行数最多的进程。我们发现kernel
写入文件数最多的进程,其计数非常高(1761519)。接下来是thermald
其写入次数约为 5K 的几个进程。
考虑到 1kernel1 是此异常的根源,我们已检查其中
/var/log/syslog
定期发生的模式:grep "kernel" /var/log/syslog | less
并找到了一个关于UFW AUDIT
并且它非常有规律地写入日志文件中。
ufw
LOGLEVEL
如果设置为及以上,将转储这些消息medium
。要查找当前值:$ grep -i "^loglevel" /etc/ufw/ufw.conf LOGLEVEL=full
这就是问题的根源,要摆脱这些常规消息,就需要这样做LOGLEVEL=low
,在大多数情况下这应该就足够了。来自man ufw
:
low logs all blocked packets not matching the default policy
(with rate limiting), as well as packets matching logged rules.
检查该LOGGING
部分man ufw
以获得有关ufw
日志记录的更多想法。
答案2
尝试less /var/log/syslog
按 shift-f 转到文件末尾并监视以下更改tail -f /var/log/syslog
您应该会看到您的日志文件。
它们上面肯定有一些垃圾,或者可能是大小问题导致 Syslog 应用程序无法查看它们。因此,重命名它并尝试再次打开 Syslog 应用程序。您应该能够看到新的日志文件。