当我打开 Nautilus 时崩溃,但使用 sudo 运行时

当我打开 Nautilus 时崩溃,但使用 sudo 运行时

我刚刚将 Ubuntu 16.04 升级到 18.04,我遇到的问题之一是我无法查看任何文件夹和文件,因为当我尝试打开它时 Nautilus 就会崩溃:

$ nautilus
Initializing nautilus-dropbox 2019.02.14
Bus error (core dumped)

但是,如果我运行,它可以正常工作sudo nautilus

这让我想到可能是由于某种权限错误

我如何检查 Nautilus 正在尝试读取哪个文件(如果有)导致其崩溃?

我尝试过的事情

  • 重新安装 nautilus

  • 确保配置文件属于我:$ sudo chown -R felipe:felipe ~/.config/*

  • 确保 dropbox 配置文件位于~/.dropbox/和 下~/.dropbox-dist属于我

  • 列出我家下的所有文件并 chown 所有配置和缓存相关文件。(我无法 chown /.gvfs~/.cache/doc我收到Function not implemented错误消息)

  • 清除包nautilus-dropbox(根本没有安装)

  • purge dropbox。同样的错误消息,但没有之前与 dropbox 相关的调试文本:

    $ nautilus
    Bus error (core dumped)
    
  • 运行strace nautilus进行调试。日志的最后几行是这里

附言nautilus 应用程序在启动时崩溃时的日志消息与我在 cmd 行上运行时收到的消息不同nautilus 。以下是启动崩溃的日志:https://pastebin.com/mVx0E7SE

答案1

我建议nautilus-dropbox删除

sudo apt purge nautilus-dropbox

如果您需要Dropbox服务,最好从Dropbox网站安装。

https://www.dropbox.com/download?dl=packages/ubuntu/dropbox_2019.02.14_amd64.deb

如果没有任何帮助,您可以创建一个新用户并将文件从旧用户复制到新用户。这肯定会有所帮助。

答案2

您已进入运行 GUI 程序所带来的痛苦世界 (tm) root。避免重复该错误。

详细信息:以“运行方式root”运行的 GUI 程序会获取各种文件的所有权,然后,当$USER尝试访问它们时,$USER无法访问,因为它们归所有root,并且$USER没有对这些文件的写访问权限,繁荣

查看最后几页的行以strace nautilus了解导致该Bus error消息的情况,这可能意味着超出范围的内存访问(或超出权限)。

检查一下/var/crash,可以找到less崩溃文件。

$HOME要查找目录中不属于您 的所有文件:

sudo find $HOME \! -user $USER -ls

如果经过检查、深思熟虑和再检查后,您想重新获得所有权:

sudo find $HOME \! -user $USER -print0 | xargs -0 -r sudo chown $(id -u):$(id -g)

答案3

由于这个错误很常见,我分享了我在使用 nautilus 时遇到这种情况时使用的两种方法。希望这对您有所帮助

第一件事:别跑sudo nautilus

如果你这样做了,你首先必须收回 中所有文件的所有权$HOME。为此,请在主目录中运行以下命令。

sudo chown userhome_directory $USER:$USER

您可以通过运行来验证一切是否正常,ls -l您应该会看到您拥有该文件。

现在介绍两种对我有用的解决方法:

  • 有时只是跟踪器有问题,因此您可以使用 重置它sudo tracker reset -r。该-r选项用于硬重置。(您可以先使用 选项尝试软重置-e
  • 下一个选项更像是一种诊断(您可以跳到最后查看:
  1. 尝试创建一个新用户来检查问题是否在会话中仍然存在。如果是,那么我无法提供进一步的帮助。

  2. 以新用户身份打开终端并运行(假设用户名)

su username
cd $HOME 

从中删除缓存rm -r .cache并重命名.profile .config .local 不要删除它们!

mv .config .config.old
mv .profile .profile.old
mv .local .local.old

现在您将重新以原始用户身份登录(完成所有初始化步骤后),看看是否可以打开 nautilus。如果答案是是的,然后关闭会话,重新以临时用户身份登录并运行:

su username
cd $HOME
rm -r .config .local .profile

并恢复其中一个重命名的目录(local.old、profile.old、config.old)。例如,查看是否local.old存在问题,然后mv .local.old local重新登录会话。如果 nautilus 仍在运行,则尝试使用另一个目录(profile.old、config.old)等等。直到找到有问题的目录。每次都不要忘记删除生成的目录。

一旦找到有问题的那个,就查看内部并尝试找出问题的原因(可能采用相同的方法)。

最快的测试选项: 我个人的问题是由于文件损坏,$HOME/.config/nautilus因此我只需运行mv .config/nautilus .config/nautilus.old并重新启动会话,它就可以再次工作。

相关内容