92%的syslog被关于'ureadahead'忽略相对路径的消息填满了。

我刚刚打开了我的笔记本电脑(使用的是Ubuntu 15.10 64位版本),并查看了今天的系统日志。总共有
$ cat /var/log/syslog | grep 'Mar 23' | wc -l
23791
$ cat /var/log/syslog | grep -P 'Mar 23.*Ignored relative path' | wc -l
21863

而且内容就像这样:

Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:.: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:.: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:tunables: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:xdg-user-dirs.d: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:..: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:multiarch.d: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:..: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:home.d: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:..: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:..: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:abstractions: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:apparmor_api: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:..: Ignored relative path
.
.
.
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:3826/stat: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:3826/cmdline: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:list-c: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:tracing_on: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:events/fs/open_exec/enable: Ignored relative path
Mar 23 12:02:56 Ubuntu ureadahead[279]: ureadahead:events/fs/do_sys_open/enable: Ignored relative path

为什么我的syslog中有92%的消息都是这样的?

真的什么都没有吗? - Mostafa Ahangarha
关于 sudo systemctl disable ureadahead.service 怎么样? - dashesy
3个回答

ureadahead在启动时会执行以下两种操作之一:如果/var/lib/ureadahead/pack存在且不超过一年,它会预读pack中记录的文件。然而,如果pack不存在或已过期,ureadahead将以"trace"模式运行,监视打开的文件并将其记录在pack文件中以供未来引导使用。
正是"trace"模式输出了这些消息。因此,如果在一年内再次引导,就不会出现任何消息。这就是为什么人们看到问题似乎"自行解决",但在一年后问题会重新出现,并且可以通过删除/var/lib/ureadahead/pack来使其再次出现的原因。
有一个包触发器可以在/etc/init.d中的事物变化时执行此操作,因此重新读取通常在更新后进行。似乎ureadahead一直以这种方式工作,但警告只是写入stderr,并且在systemd和journald之前,消息从未传递到任何地方。也许应该更改ureadahead,只在--verbose模式下输出这些消息,但与此同时,我通过以--quiet模式运行ureadahead来解决了这个问题。我能够通过创建一个systemd的drop-in文件来实现这一点:创建一个名为/etc/systemd/system/ureadahead.service.d/quiet.conf的文件,其中包含以下内容
[Service]
ExecStart=
ExecStart=/sbin/ureadahead -q

4参考:https://bugs.launchpad.net/ubuntu/+source/ureadahead/+bug/1579580 - Mausy5043

只需运行apt purge ureadahead命令即可,因为自从Ubuntu Cosmic版本以后,它已经被放弃了。它从来没有起到太大的帮助作用,对于我们大多数人来说,只有在更新时才重新启动电脑,所以它根本没有起到任何帮助作用。

由于我发布这个问题已经有一段时间了,我已经升级到了Ubuntu的新版本。所以我无法验证这是否会对其他人有所帮助。但还是感谢你的建议。希望对那些遇到这个问题的人有用。 - Mostafa Ahangarha
我刚遇到了这个问题,使用全新安装的Ubuntu Server 16.04.5。打算移除ureadahead。 - Endrju
我尝试按照建议删除"ureadahead",但这也会删除"ubuntu-minimal"(在Ubuntu 16.04上)。 - Mohan Nbs
1ubuntu-minimal只是一个伪包,它依赖于组成最小化Ubuntu安装的软件包之一(在16.04中为ureadahead)。由于您已经安装了所有最小化软件包,删除ubuntu-minimal不会改变任何内容。然而,如果您不喜欢这样,另一种停止ureadahead在启动时运行的方法是“sudo systemctl disable ureadahead.service”。 - rfm

我建议在ureadahead开始写入日志之前仔细检查一下日志。我的系统出现了相同的症状,我发现了与缺少Java Runtime Environment相关的错误。
gnome-session[939]: javaldx: Could not find a Java Runtime Environment!

除了错误提示缺少某个库文件:libvdpau_nvidia.so。
gnome-session[939]: Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory

我所做的是安装JRE8,然后创建符号链接到 /usr/lib/libvdpau_nvidia.so,这样就可以找到它了。其中一个(或两者)操作解决了我的问题。


谢谢你的回答。但是我已经重新安装了Ubuntu,现在我正在使用Ubuntu 16.04,所以无法使用你的建议。然而出于某种未知的原因,问题在几天后解决了。 - Mostafa Ahangarha