我发现系统日志中几乎 75% 的错误都是
WARNING **: Couldn't create directory monitor on smb://x-gnome-default-workgroup/. Error: Operation not supported by backend
我不需要能够监控任何 samba 共享的变化,所以我只想禁用它,这样它就不会弄乱我的日志。我该怎么办?
答案1
我遇到了同样的问题,尝试过更改 GVFS 环境变量和相关的 dconf 键,但没有得到任何好的结果,所以决定查看源代码。我在 daemon/gvfsbackendnetwork.c 文件中找到了下一个代码:
g_warning ("Couldn't create directory monitor on %s. Error: %s\n",
uri, error ? error->message : "");
...这会产生问题中描述的警告。顺便说一句,在 Ubuntu GVFS 源中,该文件中有 2 处出现相同的警告,而在 GNOME.org 的 git 中,其中 1 个条目实际上是 g_debug,而不是 g_warning。我决定将 Ubuntu 版本中的两个 g_warning 调用都更改为 g_debug,因为这将是清除系统日志中这些嘈杂警告的最小补丁。
要重现后续步骤,您必须先启用源代码存储库。然后在系统终端(又名 bash、sh)中运行所述命令:
# install build tools
sudo apt-get install build-essential devscripts fakeroot
# install gvfs build dependencies
sudo apt-get build-dep gvfs
# create temporary directory for the source code and get it via apt
mkdir ~/src; cd ~/src
apt-get source gvfs
# at the moment I've got gvfs-1.28.2 @ Ubuntu 16.04, update the path if you've got another version
# check g_warning entries to be sure what we're editing:
cat ~/src/gvfs-1.28.2/daemon/gvfsbackendnetwork.c | grep g_warning
g_warning ("无法在 %s 上创建目录监视器。错误:%s",
g_warning ("无法在 %s 上创建目录监视器。错误:%s",
# replace g_warning to g_debug as described way above
sed --in-place "s/g_warning/g_debug/g" ~/src/gvfs-1.28.2/daemon/gvfsbackendnetwork.c
# go to the source directory root
cd ~/src/gvfs-1.28.2
# bump version, edit changelog if needed, then save the file
dch -i
它看起来会像这样:
gvfs (1.28.2-1ubuntu1~16.04.2ubuntu1) 未发布;紧急程度=中等
通过将不可禁用的警告转换为调试消息,使系统日志保持清洁。
-- Habetdin 星期五, 2018 年 12 月 21 日 20:00:00 +0300
# finally, build the .deb packages
debuild -b -us -uc
# one level up from the source root - to the compiled .deb packages
cd ..
# install them all
sudo dpkg -i *.deb
最后要说明的是,我得到的 debuild 参数的描述man dpkg-buildpackage
:
-b 指定仅构建二进制文件,不构建和/或分发源文件。
-us 不对源包进行签名。
-uc 不对 .changes 文件进行签名。
这是解决问题的有点肮脏的方法,但我没有找到合适的内置解决方案,所以目前这是我发现的唯一实际清除系统日志的方法。