我刚刚打开我的笔记本电脑(使用 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
为什么我的系统日志的~%92 充满了这样的消息?
答案1
ureadahead 在启动时会执行以下两项操作之一:如果/var/lib/ureadahead/pack
存在且不超过一年,它会预读包中记录的文件。但是,如果包不存在或太旧,ureadahead 会运行“跟踪”模式,监控打开了哪些文件并记录在包文件中以供将来启动时使用。
这是跟踪模式会显示这些消息。因此,如果您在一年内再次启动,则不会出现任何消息。这就是为什么人们看到问题似乎“自行解决”,但一年后它们会再次出现,并且可以通过删除来重新出现/var/lib/ureadahead/pack
;
当 中的情况发生变化时,有一个包触发器可以执行此操作/etc/init.d
,因此通常在更新后重新读取。ureadahead 似乎一直以这种方式工作,但警告只是写入 stderr,在 systemd 和 journald 之前,消息从未传到任何地方。可能应该将 ureadahead 更改为仅在--verbose
模式下发出这些消息,但与此同时,我通过在--quiet
模式下运行 ureadahead 来解决该文件的问题。我能够使用 systemd 插入文件执行此操作:创建一个名为的文件,/etc/systemd/system/ureadahead.service.d/quiet.conf
其中包含
[Service]
ExecStart=
ExecStart=/sbin/ureadahead -q
答案2
只是apt purge ureadahead
——宇宙级的 Ubuntu 已经放弃了它。它从来没有多大帮助,对于我们大多数只有在有更新时才重新启动的人来说,它根本没有帮助。
答案3
我建议在 ureadahead 开始写入日志之前先检查一下日志。
我的系统有同样的症状,并且我发现与缺少 Java 运行时环境有关的错误:
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 的符号链接,以便搜索它。其中一个(或两个)操作为我解决了这个问题。