เหตุใด gvfs ของฉันจึงไม่แสดงภายใต้ ~ / .gvfs หรือ / run / user / <login> / gvfs


35

จากสิ่งที่ผมอ่านเมื่อการติดตั้งเครือข่ายร่วมกันผ่านทางหอยโข่งหรือติดจุดควรจะอยู่ในgvfs-mount ~/.gvfsนี้ดูเหมือนจะไม่เป็นกรณีสำหรับฉัน: ฉันพยายามติดตั้งทั้ง FTP และ SMB หุ้นผ่านทั้งหอยโข่งและgvfs-mountภายใต้อูบุนตูไม่ฝักใฝ่ฝ่ายใดและสะอาดสะอ้านและไม่มีกรณีที่ฉันไม่เห็นใด ๆ ~/.gvfsจุดติดภายใต้ ฉันสามารถเข้าถึงส่วนแบ่งที่เพิ่งค้นพบในหอยโข่ง แต่ฉันต้องการเข้าถึงผ่านบรรทัดคำสั่งซึ่งเป็นสาเหตุที่ฉันต้องการจุดเชื่อมต่อในระบบไฟล์

แก้ไข:การดีบักตามคำตอบของ James Henstridge และความคิดเห็นของ enzotib เปิดเผยว่าในแล็ปท็อปของฉันgvfs-fuse-daemonทำงานอยู่และดังนั้น gvfs mounts ก็ปรากฏขึ้นใน~/.gvfsขณะที่เวิร์กสเตชัน 2 แห่งที่~/.gvfsยังคงว่างเปล่าgvfs-fuse-daemonไม่ทำงาน ในทุก 3 เครื่องมี gvfs กระบวนการอื่น ๆ ที่ทำงาน: gvfsd, gvfs-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

คำตอบ:


12

~/.gvfsไดเรกทอรีควรจะเป็นฟิวส์ติดจัดการโดยgvfs-fuse-daemonกระบวนการ หากไดเรกทอรีว่างเปล่าก็จะแสดงว่า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ได้รับคำขอแรกในการเข้าถึงระบบไฟล์ระยะไกล นอกจากนี้ยังมีข้อผิดพลาดในอูบุนตู / เดเบียนที่ทำให้~/.gvfsไดเรกทอรีไม่สามารถอ่านได้เมื่อgvfs-fuse-daemonเกิดปัญหาและก่อให้เกิดข้อผิดพลาดปลายทางการขนส่งไม่ได้เชื่อมต่อ
kynan

เคยแก้ไขไหมว่าทำไมgvfsdไม่เริ่มgvfs-fuse-daemonอัตโนมัติ? ภายใต้ RHEL ดูเหมือนว่าจะทำงานได้ตามที่คาดไว้สำหรับผู้ใช้รูท แต่ไม่ใช่ผู้ใช้ที่ไม่มีสิทธิ์
Aaron Copley

ไม่ตอบคำถามของ "gvfs-fuse-daemon คืออะไร" และ "การเมาท์ใช้ร่วมกันโดยไม่มี gvfs-fuse-daemon ทำงานอย่างไร" gvfs-fuse-daemon อนุญาตให้ใช้ตัวเลือกเช่น allow_root ซึ่งจะถูกละเว้นโดยค่าเริ่มต้นเมื่อใช้ gvfs-mount ดังนั้นการตอบคำถามเหล่านั้นจะช่วยแก้ปัญหาความลึกลับนิรันดร์ได้ที่นี่
Nuzzolilo

มีข้อแม้อื่น! gvfs-mountต้อง DBUS และคุณจะได้รับจุดเมานท์เมื่อgvfs-mountใช้เดียวกัน DBUS SESSIONgvfs-fuse-daemonเป็น ดังนั้นหากคุณเป็น SSHing ลงในเครื่องและยิงdbus-daemonสำหรับเซสชั่นของคุณคุณยังต้องวางไข่บุคคลgvfs-fuse-daemonสำหรับเซสชั่นของคุณ
user1129682

ก็ 5 ปีต่อมาและนี่ก็ดูเหมือนจะเป็นผู้ออก
Stuart Axon

20

แก้ไขปัญหา (ชนิด)

บน Ubuntu 12.10 /run/user/(your username)/gvfs/sftp\:host\=\192.168.xxx.xxxจุดเมานท์ปรากฏใน

หวังว่าจะช่วย


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 wheezy พร้อม lxde และ nautilus ฉันพบไดเรกทอรี ~ / .gvfs ด้วยเช่นกัน ฉันพยายามวิ่ง

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

แต่มันบอกฉัน: / dev / ฟิวส์: การอนุญาตถูกปฏิเสธ

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

ฉันคิดว่าอาจเป็นเพราะฉันไม่ได้อยู่ในกลุ่มฟิวส์จากนั้นฉันเพิ่มบัญชีผู้ใช้ของฉันลงในกลุ่มนั้น หลังจากรีบู๊ตแล้ว gvfs mount จะแสดงเป็น ~ / .gvfs อย่างถูกต้อง


3

ฉันมีปัญหาที่คล้ายกันกับระบบ 12.04 แม่นยำของฉัน

ไดรฟ์ที่ปรากฏขึ้นที่ติดตั้งใน Nautilus ไม่ปรากฏขึ้น~/.gvfsโดยเฉพาะหลังจากรอบการหยุดชั่วคราว / ดำเนินการต่อ gvfs-fuse-daemonกำลังทำงานอยู่ แต่กำลังฆ่าและเริ่มใหม่ไม่สามารถแก้ปัญหาได้

ฉันพบว่าการรีสตาร์ท Nautilus หลังจากnautilus -qสาเหตุgvfs-fuse-daemonและ Nautilus กลับมาทำงานร่วมกันอีกครั้ง - จุดเมานต์ปรากฏขึ้นอีกครั้ง


3

ในรุ่นใหม่ของอูบุนตู gvfs /run/user/$USER/gvfs/เริ่มต้นที่ติดตั้งใน

คุณสามารถตรวจสอบตัวเองที่มันจุดเริ่มต้นยึดติดโดยการมองหาเส้น gvfsd /etc/mtabฟิวส์ของผู้ใช้ใน


2

ฉันถามคำถามที่เกี่ยวข้องกับระบบ Debian ของฉันและคำตอบคือ:

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

จากนั้นรีบูท หลังจากเมานต์ GVFS (ผ่าน Nautilus) ไดเรกทอรีแชร์จะอยู่ในหนึ่งในสองแห่งทั้งนี้ขึ้นอยู่กับเวอร์ชันของ Debian หรือ Ubuntu ที่คุณมี:

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

ฉันค่อนข้างมั่นใจว่าคุณไม่ต้องรีบูต systemctl --user restart gvfs-daemonได้เคล็ดลับสำหรับฉัน
Torkel Bjørnson-Langen

0

เมื่อฉันต้องการเข้าถึงไฟล์ที่แชร์จากเครื่อง Windows โดยตรง (ไม่เรียกดูผ่าน Nautilus) ฉันจะเมาท์แชร์ในโฟลเดอร์ในโฮมไดเร็กตอรี่ของฉัน

ตัวอย่างเช่น. หากมีเครื่อง Windows ที่มีที่อยู่ IP 192.168.16.2ในโดเมนmydomainที่มีโฟลเดอร์ที่ใช้ร่วมกัน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 พูดว่า "แต่ฉันต้องการเข้าถึงผ่านบรรทัดคำสั่งซึ่งเป็นสาเหตุที่ฉันต้องการจุดเชื่อมต่อในระบบไฟล์" ดังนั้นฉันจึงพยายามช่วย
Stacey Richards

ขอบคุณ ฉันควรจะกล่าวว่าฉันได้พิจารณาโซลูชันนี้แล้ว แต่ imho มีข้อเสียที่สำคัญ 2 ข้อที่ทำให้เป็นไปไม่ได้: 1) ไฟล์ข้อมูลรับรองจะต้องมีรหัสผ่านเป็นข้อความธรรมดาซึ่งไม่สามารถยอมรับได้บนเครื่องที่ใช้ร่วมกัน 2) ต้องการสิทธิ์รูท และฉันต้องการวิธีแก้ปัญหาที่ใช้กับเครื่องจักรที่ฉันไม่มี sudo
kynan

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.