为什么我的gvfs挂载未显示在〜/ .gvfs或/ run / user / <login> / gvfs下?


35

据我了解,通过nautilus gvfs-mount挂载网络共享或挂载点时应位于~/.gvfs。对于我来说,情况似乎并非如此:我尝试通过nautilus以及gvfs-mount在Ubuntu Maverick和Natty下同时安装FTP和SMB共享,在任何情况下都没有看到任何安装点~/.gvfs。我可以访问在nautilus中找到的共享,但是我想通过命令行访问,这就是为什么我需要文件系统中的挂载点。

编辑:调试以下詹姆斯亨斯特莱吉答案,并enzotib的评论表明,我的笔记本电脑gvfs-fuse-daemon正在运行,因此GVFS坐骑出现~/.gvfs,而在2个工作站,其中~/.gvfs还空着gvfs-fuse-daemon未运行。在所有3台还有其他GVFS进程运行:gvfsdgvfs-afc-volume-monitor,...

在笔记本电脑上,mount | fgrep gvfs收益

gvfs-fuse-daemon on /home/xxx/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=xxx)

这就提出了问题:

  • 如何在不gvfs-fuse-daemon运行的情况下挂载共享?在这种情况下,是否没有创建挂载点,并且对共享的每次访问都是否存在gvfs库调用?哪个守护程序负责?gvfsd
  • 的作用是gvfs-fuse-daemon什么?它仅在其中创建保险丝安装点~/.gvfs吗?

更新:在12.10及更高版本中,挂载位于/run/user/<login>/gvfs


2
您可以显示的输出mount | grep gvfs吗?
enzotib

Answers:


12

~/.gvfs目录应该是该gvfs-fuse-daemon进程处理的FUSE挂载。如果该目录显示为空,则表明该目录gvfs-fuse-daemon未正确启动。

您可以尝试使用以下命令手动启动它:

/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs

如果失败,您可以尝试检查是否在该目录中挂载了其他任何东西,或者甚至首先删除并重新创建〜/ .gvfs目录。如果仍然失败,您可以更新您的问题并提供任何错误消息gvfs-fuse-daemon吗?

**在14.04上,将调用守护程序,该守护程序gvfsd-fuse可在中找到/usr/lib/gvfs/gvfsd-fuse


1
更多的研究表明,当第一个请求访问远程文件系统时,gvfsd它应该gvfs-fuse-daemon自动启动gvfsd。ubuntu / debian中还有一个错误~/.gvfsgvfs-fuse-daemon崩溃时该目录使该目录不可读,并产生错误消息“ 传输端点未连接”
kynan 2011年

是否解决了为什么gvfsdgvfs-fuse-daemon自动启动的问题?在RHEL下,它似乎可以对root用户正常工作,但对非特权用户却不起作用。
亚伦·科普利2012年

并没有真正回答“ gvfs-fuse-daemon的作用是什么”和“在不运行gvfs-fuse-daemon的情况下如何挂载共享?”的问题。gvfs-fuse-daemon允许使用诸如allow_root之类的选项,使用gvfs-mount时默认将其忽略。因此,回答这些问题将有助于解决这个永恒的谜团。
Nuzzolilo '16

还有另一个警告!gvfs-mount需要DBUS,并且仅在gvfs-mountSAME DBUS SESSION用作时才能获得安装点gvfs-fuse-daemon。因此,如果要通过SSH连接到计算机中并dbus-daemon为会话启动一个,则还必须gvfs-fuse-daemon为该会话生成一个个人。
user1129682 '16

好吧,这是5年后的今天,这似乎仍然是一个问题
Stuart Axon


4

在Ubuntu 12.10中,路径已更改:

$ mount |grep gvfs
gvfsd-fuse on /run/user/pcm/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=pcm)

3

在Debian 6.0上,带有lxde和nautilus。我发现〜/ .gvfs目录也为空。我试着跑

/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs

但是它告诉我:/ dev / fuse:权限被拒绝。

$ ll /dev/fuse
crw-rw---T 1 root fuse 10, 229 Dec 21 11:59 /dev/fuse

我以为可能是因为我不在保险丝组中,所以我将用户帐户添加到了该组中。重新引导后,gvfs挂载正确显示在〜/ .gvfs中。


3

我的12.04精确系统也有类似的问题。

挂载在Nautilus中的驱动器不会出现在中~/.gvfs,特别是在挂起/恢复周期之后。gvfs-fuse-daemon正在运行,但是将其杀死并重新启动并不能解决问题。

我发现在nautilus -q导致gvfs-fuse-daemonNautilus再次合作之后重新启动Nautilus- 挂载点重新出现。


3

在较新版本的Ubuntu中,gvfs默认安装在中/run/user/$USER/gvfs/

您可以通过在中查找用户的gvfsd-fuse行来检查自己的默认挂载点在哪里/etc/mtab


2

我为Debian系统问了一个相关的问题答案是:

apt-get install gvfs-fuse
adduser <username> fuse

然后重启。在通过Nautilus挂载GVFS之后,共享目录将位于两个位置之一,具体取决于您所使用的Debian或Ubuntu版本:

/run/user/<username>/gvfs
~/.gvfs

我很确定您不必重启。A systemctl --user restart gvfs-daemon为我做了把戏。
TorkelBjørnson-Langen'18

0

当我想直接访问从Windows计算机共享的文件(而不是通过Nautilus浏览)时,我将共享安装在主目录的文件夹中。

例如。如果192.168.16.2在域mydomain上有一台Windows IP地址为Windows的计算机,该计算机具有共享的文件夹,shared并且我的主目录中有一个名为的目录mnt,则可以通过以下方式挂载共享mnt并访问它,就好像它位于主目录中一样:

sudo mount -t cifs "//192.168.16.2/shared" /home/stacey/mnt -o credentials=credentials,uid=stacey,gid=stacey

凭证包含:

username=stacey
password=mypassword
domain=mydomain

现在,我可以使用它ls /home/stacey/mnt来列出共享目录shared上的文件和目录,192.168.16.2并可以像访问本地硬盘驱动器上的文件一样访问此安装点内的任何文件。

您可以通过以下方式获取有关挂载SMB共享的更多信息:

man mount.cifs

不是OP问的。
enzotib

2
不,但是kynan说:“但是我想通过命令行访问,这就是为什么我需要在文件系统中挂载点”,所以我只是在提供帮助。
史黛西·理查兹

谢谢。我应该提到我已经考虑过这种解决方案,但是imho有2个主要缺点,使其不可行:1)凭证文件必须包含纯文本密码,这在共享计算机上是不可接受的,2)它需要root特权而且我需要一个在没有sudo的机器上也可以使用的解决方案
kynan 2011年

0

目前...

#!/bin/bash
# Add to Cron
# */1 * * * * /root/fixGvfs
w | grep -v root | tail -n +3 | awk '{print $1}' > /tmp/fixGvfsUsers
while read usuario
do
  id=$(id -u $usuario)
  if [ ! -f "/tmp/fixGvfs${id}" ]; then
    umount /run/user/${id}/gvfs
    if [ $? -eq 0 ]; then
      su - $usuario -c "/usr/bin/pkill gvfs*"
      touch "/tmp/fixGvfs${id}"
    fi
  fi
done < /tmp/fixGvfsUsers

3
一个简短的解释,这个脚本将要做什么将是很好的。cron-job应该何时运行?
mook765 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.