it-swarm-tr.com

"Cihaz veya kaynak meşgul" ü nasıl yenebilirim?

Denedim rm -rf bir klasör ve "cihaz veya kaynak meşgul" var.

Windows'da bunu çözmek için LockHunter'ı kullanırdım. Linux eşdeğeri nedir? (Lütfen cevap olarak basit bir "bunun kilidini aç" yöntemi verin ve this gibi makaleleri tamamlamayın. Yararlı olmalarına rağmen şu anda sadece ASimpleMethodThatWorks ™ ile ilgileniyorum)

250
ripper234

İstediğiniz araç lsof'dir; açık dosyaları listele anlamına gelir.

Çok fazla seçeneği var, bu yüzden man sayfasını kontrol edin, ancak bir dizinin altındaki tüm açık dosyaları görmek istiyorsanız:

lsof +D /path

Bu, /path Altındaki dosya sistemi aracılığıyla geri çekilecektir, bu yüzden büyük dizin ağaçlarında yapmayı unutmayın.

Hangi işlemlerin dosyalarının açık olduğunu öğrendikten sonra, bu uygulamalardan çıkabilir veya kill(1) komutuyla onları öldürebilirsiniz.

255
camh

bazen montaj sorunlarının bir sonucudur, bu yüzden kaldırmaya çalıştığınız dosya sistemini veya dizini kaldırırım:

umount/yol

122
kip2

Bu tür şeyler için fuser kullanıyorum. Bir bağlantının içindeki bir dosyayı veya dosyaları kullandığını listeler.

16
BillThor

İşte çözüm:

  1. Dizine gidin ve ls -a
  2. Bir .xyz dosya
  3. vi .xyz ve dosyanın içeriğinin ne olduğuna bakın
  4. ps -ef | grep username
  5. 8. sütunda (son satır) .xyz içeriğini göreceksiniz
  6. kill -9 job_ids - burada job_ids, 8. sütundaki ilgili hataya neden olan içeriğin 2. sütununun değeridir
  7. Şimdi klasörü veya dosyayı silmeyi deneyin.
12
user73011

Ben de aynı sorunu vardı, @camh öneri ile başlayan bir tek katlı inşa:

lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs kill -9

awk komutu PIDS'i alır. tail komutu sinir bozucu ilk girişten "PID" kurtulur. Kullandım -9 öldürmek, diğerleri daha güvenli seçenekler olabilir.

NFS ağ dosya sistemlerine sahip sunucularda bunu sık sık deneyimliyorum. Dosyaları genellikle .nfs000000123089abcxyz Gibi adlandırıldığından, dosya sistemi ile ilgili bir şey olduğunu varsayalım.

Tipik çözümüm dosyanın üst dizinini yeniden adlandırmak veya taşımak, daha sonra bir veya iki gün sonra geri gelmek ve dosya otomatik olarak kaldırılmış olacak, bu noktada dizini silmek için özgürüm.

Bu genellikle yazılım kitaplıkları yüklediğim veya derlediğim dizinlerde olur.

7
user5359531

Otomatik bir test ramdisk oluşturduğunda bu sorunla karşılaştım. Diğer cevaplarda önerilen komutlar olan lsof ve fuser yardımcı olmadı. Testlerden sonra bağlantısını kesip klasörü silmeye çalıştım. Gerçekten uzun zamandır kafam karışmıştı çünkü kurtulamadım - "Cihaz veya kaynak meşgul" almaya devam ettim.

Kazara bir ramdiskten nasıl kurtulacağımı öğrendim. mount komutunu çalıştırdığımla aynı sayıda çıkarmak zorunda kaldım, yani Sudo umount path

Otomatik test kullanılarak yaratıldığı için, birçok kez monte edildi, bu yüzden testlerden sonra bir kez bağlantısını keserek ondan kurtulamadım. Böylece, el ile birçok kez bağlantısını kestikten sonra nihayet tekrar normal bir klasör haline geldi ve silebilirdim.

Umarım bu sorunla karşılaşan başka birine yardımcı olabilir!

5
gloriphobia

Prabhat'ın yukarıdaki sorusunu ortadan kaldırarak, bir encfs sürecini mahsup ettiğimde macos High Sierra'da bu sorunu yaşadım, yeniden başlattım bunu çözdüm, ama bu

ps -ef | grep name-of-busy-dir

Bana işlemi ve PID'yi (sütun iki) gösterdi.

Sudo kill -15 pid-here

onu düzeltti.

5
bil

Sunucunuz erişilebilirse, deneyin

Bu dizini sunucudan silme

Veya mount ve mount tekrar yapın, umount -l: normal umount'la ilgili herhangi bir sorunla karşılaşıldığında tembel umount.

Benim de bu problemim vardı

lsof +D path: çıktı vermiyor

ps -ef: hiçbir ilgili bilgi vermiyor

3