如何在不崩溃的情况下查看’/ var / log / syslog’内容
由于各种原因,我有必要在/var/log/syslog
检查我的计算机的/var/log/syslog
,但这已经成为一个问题,因为我实际上无法查看该文件中的日志,因为每次我打开它(无论我使用哪个程序)都会崩溃。 例如,如果我在nano
, gedit
, cat
甚至主日志查看程序中打开它,我会遇到这样的崩溃,因为要加载的文件中有太多数据:
所以我的问题是,如何在没有查看器崩溃的情况下查看syslog
? 难道我做错了什么? 或者只是一个更好的方式,每个人都使用,我不知道?
OS信息:
Description: Ubuntu 15.04 Release: 15.04
TL; DR:
问题是由于文件var/log/syslog
大小非常大,特别是ufw
定期UFW_AUDIT
大量的UFW_AUDIT
日志。 要解决这个问题,我们需要在ufw
配置文件/etc/ufw/ufw.conf
中将ufw
的LOGLEVEL
设置为low
:
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
显示。 最常见的两个是文件太大而无法读取,文件具有无法读取的exception内容。
起初我们考虑了第一个原因,即文件太大(我将逐步显示步骤,因为我们已经完成了):
-
首先,我们需要检查
/var/log/syslog
中有多少行,结果certificate这很不寻常:$ wc -l /var/log/syslog 1308061 /var/log/syslog
-
由于文件有1308061行数很大,我们需要检查如何为
logrorate
配置logrorate
: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作为此exception的来源,我们检查了
/var/log/syslog
中定期发生的模式:grep "kernel" /var/log/syslog | less
并找到了一个关于UFW AUDIT
,它非常经常地写在日志文件中。
-
如果将
LOGLEVEL
设置为medium
且更多,则ufw
将转储这些消息。 要查找当前值:$ 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.
检查man ufw
的LOGGING
部分,以便更好地了解ufw
日志记录。
尝试less /var/log/syslog
按shift-f转到文件末尾并监视tail -f /var/log/syslog
等更改
您应该看到您的日志文件。
必须有一些垃圾或可能阻止Syslog应用程序查看它们的大小问题。 因此,重命名它并尝试再次打开Syslog应用程序。 您应该能够看到新的日志文件。