Bir vagrant dosyasını kaldırma .nfs0000000000b869e300000001


15

Bir dosyayı kaldırdım ve şimdi görüyorum:

$ ls
total 64
-rw-rw-r-- 1 502 17229 Sep 17 16:42 page_object_methods.rb
drwxrwxr-x 7 502   238 Sep 18 18:41 ../
-rw-rw-r-- 1 502 18437 Sep 18 18:41 new_page_object_methods.rb
-rw-r--r-- 1 502 16384 Sep 18 18:42 .nfs0000000000b869e300000001
drwxrwxr-x 5 502   170 Sep 21 13:48 ./
13:48:11 *vagrant* ubuntu-14 selenium_rspec_conversion

ve kaldırmaya çalışırsam:

$ rm .nfs0000000000b869e300000001
rm: cannot remove ‘.nfs0000000000b869e300000001’: Device or resource busy

Bu ne gösteriyor? Ne yapmalıyım


İle birlikte bu konu, bu gösterge ve ses hizmeti böcek isues ile kombine süreçlerin 100'ler Açık dosyaları tutmak, gibi bu nereye ~ / .cache / günlükleri çok fazla büyümesine ve daha sonra sıkıştırılır sonradan görme, içinde çok yer kaplıyor edildi benim ana dizinimi içeren kurumsal NFS sürücüsü. Ekleyerek etrafında çalıştı ps -Af | grep 'indicator-services-start' | awk '{ print $2 }' | xargs killetmek crontab -e.
Andres Riofrio

Yanıtlar:


14

Bir dosya bir işlem tarafından açıkken silinebilir. Bu durumda, dizin girişi silinir, ancak dosyanın kendisi (inode ve içerik) geride kalır; dosya yalnızca başka bağlantısı olmadığında ve hiçbir işlem tarafından açılmadığında gerçekten silinir.

NFS durum bilgisi olmayan bir protokoldür: işlemler önceki işlemlerden bağımsız olarak gerçekleştirilebilir. Sunucunun yeniden başlatılması bile mümkündür ve tekrar çevrimiçi olduğunda, istemciler dosyalara daha önce olduğu gibi erişmeye devam eder. Bunun çalışması için, dosyaların açılmasıyla elde edilen bir tanıtıcıyla değil (sunucunun yeniden başlatıldığında unutacağı) dosyaların isimleriyle belirtilmesi gerekir.

İkisini bir araya getirin: bir dosya bir istemci tarafından açılıp silindiğinde ne olur? Dosyanın adını açık tutması gerekir, böylece dosyayı açan istemcinin dosyaya erişmeye devam etmesi gerekir. Ancak bir dosya silindiğinde, daha sonra bu ada sahip başka bir dosyanın bulunmaması beklenir. Böylece NFS sunucuları açık bir dosyanın silinmesini yeniden adlandırmaya dönüştürür: dosya yeniden adlandırılır .nfs…( .nfsardından bir harf ve rakam dizesi gelir).

Bu dosyaları silemezsiniz (denerseniz, tüm bunlar .nfs…farklı bir sonekle yeni bir görünüme sahip olmanızdır ). Dosyayı açık olan istemci dosyayı kapattığında sonunda kaybolurlar. (İstemci dosyayı kapatmadan önce kaybolursa, sunucu fark edene kadar biraz zaman alabilir.)


2

Başka bir sorudaki @mtak kullanıcısı şunları önerir:

You could try runningkaynaştırıcı /yol / to/.nfsto check which process is using the .nfs file. – mtak May 2 '14 at 9:13

^ ^ ^ ^ ^ Çalışıyor ^ ^ ^ ^ ^ Ve dosya tanıtıcı serbest bırakmak neden rahatsız edici işlemi öldürmek.

Örneğin

$ rm -rf ~/Downloads
rm: cannot remove ‘/nfshome/x/Downloads’: Directory not empty
$ ls -alstr ~/Downloads
total 38864
  972 -rw-r--r--   1 x users   988438 Dec 20  2016 .nfs00000000018d307a00000369
31812 -rw-r--r--   1 x users 32503812 Dec 20  2016 .nfs00000000018d307f0000036b
  636 drwx--x--x 134 x y   647168 Aug 28 10:37 ..
  240 drwxr-xr-x   2 x y   241664 Aug 28 10:43 .
$ rm -rf ~/Downloads
rm: cannot remove ‘/na-homes/x/Downloads/.nfs00000000018d307a00000369’: Device or resource busy
rm: cannot remove ‘/na-homes/x/Downloads/.nfs00000000018d307f0000036b’: Device or resource busy

$ fuser /nfshome/x/Downloads/.nfs00000000018d307400000367
/nfshome/x/Downloads/.nfs00000000018d307400000367:  8231m
$ ps -elf |grep 8231
0 S x     1493 15153  0  80   0 - 28177 pipe_w 10:55 pts/39   00:00:00 grep --color=auto 8231
0 S x     8231  7660  0  99   - - 481464 poll_s Jul19 ?       00:06:01 /usr/libexec/tracker-extract
$ kill 8231
$ kill 8231 # kill twice to check first kill worked, . . 
            # escalate to kill -9 8231 if first kill didn't work, . . 
            # use sudo or root or other user to kill if ownership prevents kill working.
-bash: kill: (8231) - No such process
$ rm -rf ~/Downloads

$ ls -alstr ~/Downloads/
ls: cannot access /nfshome/x/Downloads/: No such file or directory

YAŞASIN! Başarı.

Tabii ki YMMV. Dosya açıkken otururken farklı bir işlem olabilir.

İzleyici ayıklama işlemi, öldürdükten sonra otomatik olarak yeniden başlatıldı.

Bu izci özü nedir? (Bunu centos / redhat'ta görüyorum)

/programming/26737900/tracker-extract-and-tracker-store-processes-consuming-huge-amount-of-ram

extra/tracker 1.2.3-1 (gnome)
    All-in-one indexer, search tool and metadata database

1
Kullanıcıya durumu düzeltmek için bir yol sağladığı için, kabul edilen cevaptan çok daha yararlıdır.
chb

1

NFS "durumsuz" olduğundan, bir dosyayı açmak için UNIX yöntemini taklit etmenin ve ardından açık bir dosya tutamağını tutarak kaldırmanın bir yolu olmalıdır.

Herhangi bir NFS dosya işlemi zincire neden olur:

open(); seek-last-off(); doit(); close();

çalıştırılacak ve NFS'nin bir sunucuyu yeniden başlatmasından kurtulmasının nedeni budur.

İstemcide eski dosyayı açan işlem sona erdiğinde, dosya kaybolacaktır.

Doğru şekilde uygulanan dosya sunucuları, her gece bir haftadan eski olan tüm dosyaları kaldıran bir komut dosyası çalıştıracaktır. Bunun nedeni, istemcinin böyle bir dosyayı tutarken yeniden başlatılması durumunda dosyanın sonsuza kadar kalmasıdır.


0

Başka bir işlem büyük olasılıkla dosyayı kullanıyor (yani dosyada açık bir dosya tanıtıcısı var). Dosyayı yok sayın ya lsofda bu dosyada hangi işlemin açık olduğunu bulmak için ya da benzerini kullanın (ya da her şeyi yeniden başlatın!).


0

Benzer bir durumla karşılaştım, ancak benim durumumda kendi programım tarafından oluşturulan bir dosyayı silemiyorum. Bundan emindim çünkü programım tarafından oluşturulan bir dizinde mevcuttu. Bu programı nerede ve ne zaman çalıştırdığımı bilmiyordum. Çözüm: Tüm terminallerimden çıktım. Tekrar giriş yaptım ve dosyayı sildim.

PS Cevabım yalnızca belirlediğim senaryo için geçerlidir.

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.