sshfs cihazı meşgul


30

Uzak bir dosya sistemini sshfs kullanarak bağladım (sürüm 2.8.4)

sshfs -o allow_root joeuser@example.com: ./example

ancak sökme işlemi başarısız oluyor

> fusermount -u example
umount: /home/joeuser/example: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

Bu hataya neyin sebep olduğu ve nasıl düzeltebileceği hakkında bir fikriniz var mı?

Yanıtlar:


14

Bazı program, çıkarmaya çalıştığınız dosya sisteminde bir dosya kullanıyor. Okumak veya yazmak için açılan bir dosya, mevcut bir dizin veya birkaç belirsiz durum olabilir. Hatta dosya sistemindeki bir dizinin bağlantı noktası olmasından kaynaklanıyor olabilir.

Araştırmak için koş lsof +f -- example. Sürecin dosya sistemini ne kullandığını söyleyecektir. Dosyaların kapatılıp kapatılmayacağı, öldürüleceği veya çıkarılmamış işlemi erteleme konusunda kendi kararınızı verin.


Garip bir şekilde lsof, bir gvfsd-arşiv işlemini göstermedi; bu, bir dosya yöneticisi GUI'sinden bir arşiv dosyasını açtıktan (ve kapattıktan sonra) geride bıraktı. Yani kontrol edin ps aux | grep gvfsd-archive.
alexei

İstat'ın yürütemeyeceği ve bilgilerin eksik olabileceği ve suçluyu listelemediği uyarıları verdi. Benim durumumda, monte edilmiş olanın içinde çalışma dizini olan bir terminalim vardı.
Jnisnis Elmeris

36

Sanırım tembel bir tembel istiyorum:

sudo umount -l example

1
Bence önerin yanlış. Manuel sayfaya göre tembel miktar Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem *as soon as it is not busy* anymore. Bu yüzden orijinal sorunu çözmez. @Gilles ile anlaşmalı, lsofburada yardım etmeli.

2
Aslında, bu benim için çalıştı. lsof hiçbir açık dosya bulamadı ancak umount -lçalıştı.
gerrit

1
Bu çözüm aynı zamanda benim için çalıştı!
Dan

1
Aynı sorunu sshfs ile deneyimledim, bu benim için de işe yaradı.
Orun

4

Ben sadece bu sorun vardı kill -9ve bağlı dosya sisteminden okuma işlemi yapamadı . veya kill -9sonra bile çalışmadı (işe yaradı). Çalışan tek şeydi .fusermount -zu /mount/pointumount -l /mount/pointpkill -9 sshfs


1
fusermount -zu /mount/pointbenim için çalıştı. Teşekkürler!
ostrokach

3

Ubuntu'yu çalıştırmak, “tembel unmount” olarak belgelenen man fusermountbir -zseçeneği anlatıyor . İlişkili görünüyor, ancak bu diğer adam sayfasında verilen bir onay gerekiyor: fusermount (man.he.net) . Bir kullanmak gerekir ile-u , -zbir hata üretecektir yalnız seçeneği. -zSeçeneği denedim ve hile yaptığını onaylayabilirim, ancak bu kesinlikle çok fazla bir numara gibi görünüyor: tam olarak ne işe yarıyor? Dizin meşgul olmadığında otomatik olarak kaldırılmasını sağla ‑ daha? Bilmiyorum, belgelenmemiş, çok güvensiz.

Yani burada başka bir seçenek, daha ayrıntılı, ancak daha güvenli: bir döngüde, gerektiği kadar başarılı bir şekilde başarılı olana kadar bağlantıyı kesmeye çalışır.

echo -n "Unmounting...";
fusermount -u -q "$MOUNT_POINT";
OK="$?";

while [ "$OK" != "0" ]
do
   sleep 1;
   echo -n ".";
   fusermount -u -q "$MOUNT_POINT";
   OK="$?";
done

echo;

Minimum düzeyde bir geri bildirim vardır, böylece ne olup bittiğini bilir ve asıldığına inanmazsınız.

Bu seçenek bir kabuk betiğinden kabul edilebilir; komut satırı etkileşimi için, -zseçeneğin kullanımı daha kullanışlıdır, ancak kişi sayfasının belgelemediğinin farkında olması gerekir ve tam olarak ne yaptığına dair şüpheler olabilir.


2

Sshfs paylaşımındaki bir dizine açık bir terminal penceresi varken sık sık "aygıt meşgul" sshfs ile karşılaşıyorum. Terminalden çıkma veya dizinleri yerel bir paylaşıma değiştirme ardından fusermount -u komutunu çalıştırmak sorunlarımı çözer.



1

Eğer varsa zaten garanti denemeden önce hiçbir işlem hala dosya sistemini kullanıyor "normal" bağladığınızda veya çözdüğünüzde:

  • fuser -vm /mount/point ve / veya
  • lsof /mount/point onları bulmak için
  • Quit / kill / do_something_with_them ile /mount/pointartık kullanılmaması için

Deneyin:

  • pkill -KILL sshfs ve sonra
  • fusermount -u /mount/point.

Ağ bağlantısını kaybettim ve tepkisiz sshfs bağlantı noktasını kaldıramadığımda bana yardımcı oldu.

Ayrıca, ağ bağlantısı kesildiğinde sshfs'lerin otomatik olarak numaralanmasını istiyorsanız , bir G / Ç hatasının sshfs'lerini kullanarak uygulamaları bildirerek (sınırsız takılıp kalmamalarını),

  • sshfs -o ServerAliveInterval=15 remote-srv:/remote/dir /local/mountpoint

Hiçbir veri alışverişinde bulunmadığında, sshmüşteriniz sunucudan bir yanıt alıp alamayacağını her 15 saniyede bir kontrol edecektir. 3 kontrol başarısız olursa, bağlantı kesilir ve düşer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.