Linux'ta 'eski dosya işleme' ne anlama geliyor?


104

Diyelim ki açık bir terminalim var ve bu terminal aracılığıyla cdbir dizine ulaştım. Başka bir terminal aracılığıyla, bu dizini silip aynı yedeklemeden geri yüklüyorum. vimİlk terminalden aynı dizindeki bir dosyayı denediğimde , neden eski bir dosya tanıtıcısı ile ilgili bir hata alıyorum? Bunun anlamı ne? (Bir yan notta, bu sorunu atlamanın mümkün olduğunu buldum cd $(pwd).)


NFS, A ana bilgisayarından B ana bilgisayarına bir dizin bağlarsanız (adir olarak adlandırın), ardından A ana bilgisayarında adir için sil ve geri yükle işini yaparsanız, ana bilgisayardaki adir'e eriştiğinizde de "Eski dosya tanıtıcısı" hatasını alabilirsiniz. B. touchA ana bilgisayarındaki komutu kullanmak normal hale getirebilir.
rustyhu

Yanıtlar:


86

Dizin silindiğinde, inode Bu dizinin (ve içeriğinin için düğüm) geri dönüştürülür. Kabuğunuzun o dizinin inode'una (ve içeriğinin düğümlerine) sahip olduğu işaretçi artık geçerli değil. Dizin yedekten geri yüklendiğinde, eski düğüm vardır değil (mutlaka) yeniden; dizin ve içeriği rastgele düğümlerde saklanır. Aynı kalan tek şey, ana dizinin geri yüklenen dizin için aynı adı yeniden kullanmasıdır (çünkü siz söylediniz).

Şimdi, orijinal kabuğunuzun hala işaret ettiği dizinin içeriğine erişmeye çalışırsanız, bu isteği o zamandan beri geri dönüştürülen (ve hatta bir şey için kullanımda olan) orijinal inode için bir istek olarak dosya sistemine iletir. şimdi tamamen farklı). Yani stale file handlevar olmayan bazı verileri istediğiniz için bir mesaj alıyorsunuz.

Bir cdişlemi gerçekleştirdiğinizde , kabuk, ona verdiğiniz hedefin inode konumunu yeniden değerlendirir. Artık kabuğunuz dizin için yeni inode'u (ve içeriği için yeni inode'u) bildiğine göre, içeriği için gelecekteki istekler geçerli olacaktır.


Ah, yani bu sadece sistemin geçersiz / boş inode işaretçilerine muamele etme yolu mu?
IDDQD

Evet. Ayrıntıları yeterince bilmiyorum, örneğin, başka bir şeye işaret etmek için daha önce geri dönüştürülmüş bir inode'a başvurmaya çalıştığınızda ne olacağını bilmiyorum. Hala eski bir dosya tutacağı alır mısınız? Yoksa beklenmedik veriler mi alırdınız?
dg99

1
Birisi bu I-node'u mevcut dizin olarak alarak gerçekten kullandığı için sistemin onu yeniden kullanacağını sanmıyorum.
Samuel Åslund
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.