Neden terminal kendini kaldırabilir?


25

ekran görüntüsü

Nasıl apt-get remove xtermgeçiyor? Ve kaldırıldıktan sonra xtermkapanmıyor ve normal şekilde çalışmaya devam ediyor.

xtermİşlem devam ederken RAM'de önbelleğe alınmış mı ?


6
Kesin olarak, Gerçekten kendini kaldırmıyor - apt-getkaldırıyor xtermve bir şekilde bir xtermsürece bağlı olduğu hakkında hiçbir fikri yok - bu yüzden "Çalışırken xterm neden kaldırılabilir?" Güzel soru.
Volker Siegel

2
İşletim sistemini çalıştırırken sabit diski nasıl silebileceğinize benzer.
jkd

Yanıtlar:


53

Tam değil. Dosya program tarafından zaten açık. Dosyayı silmek (ve daha sonra başka bir sürümle değiştirmek) çalışan programı etkilemez; çünkü orijinal dosya açık tutulur (programda yeniden açmak için diskte bir ad olmasa da). Sadece dosyanın tüm tanıtıcıları kapalı olduğunda, diskteki veri blokları serbest bırakılır. O zamana kadar açık dosya normal şekilde okunup yazılabilir - tek değişiklik, adının kaldırılmasından bu yana başka kimsenin açamayacağıdır.

Programın bölümleri silindiğinde ram olarak çoktan okunmuş olsa da, daha sonra hala atılabilir ve daha sonra yeniden okunabilir veya programın daha önce yürütülmemiş olan yeni bölümleri silinen dosyadan yüklenebilir.


4
Asıl sebep budur… bu aynı zamanda rm -rf /çalışmasının sebebidir .....
heemayl

6
Eğer "işleri" kelimesini kullanmak istiyorsanız, herşeyi başarılı bir şekilde batırmak için. ;) İlginç bir şekilde, rm -rf /hemen ardından ikinci kez çalıştırmayı denerseniz işe yaramaz;)
thomasrutter

1
lsofÇıktıda sık sık "/ some / file / name (deleted)" ifadesini gördüm ve bir 'zombi' dosyasının nasıl göründüğünü biliyorum ... ama böyle bir dosyanın içeriğini yok etmekten kurtarmanın bir yolu var. son dosya tanıtıcısı ne zaman ölür?
Kilian Foth

1
@KilianFoth, hala açık dosya olan bir işlem bulabilirseniz, / proc / $ PID / fd / $ ID dizininden başka bir dosyaya kopyalayabilirsiniz, ancak dosyayı kurtarmanın bir yolunu bulamıyorum. Sabit bağlantıdaki tüm denemeler başarısız olduğu için yerindedir.
psusi

3
@KilianFoth Bir dosya tanıtıcısı varsa root, linkatsistem çağrısını kullanarak bunun için bir ad oluşturabilir (ve böylece silmeyi önleyebilir) . Ancak çalıştırılabilirler ve kütüphaneler bir dosya tanıtıcısı gerektirmeyen hafıza ile eşleştirilmiştir. Bir dosya üzerinde sadece bellek haritalanmış olduğu için var olan herhangi bir yol bilmiyorum. Yürütülebilir dosyalara /procçalışırken erişilebilse de, bu yalnızca kurtarmanın ötesinde olabilecek kütüphaneler ve diğer bellek eşlemeli dosyalardır. Bununla ilgili daha fazla ayrıntı istiyorsanız, ayrı bir soru olarak sormalısınız.
kasperd

8

xtermİşlem devam ederken RAM'de önbelleğe alınmış mı ?

Kesinlikle. Bu, bir şeyleri kilitlenmeden çalışırken çalışırken güncelleştirmeleri yüklemenizi sağlayan işleme benzer. Ayrıca, hizmetleri güncelledikten sonra neden yeniden başlatmanız gerekeceği de. Bir şey çalıştığında, ikili hafızasındadır.

Kaldırılan veya değiştirilen diğer dosyalara (tutulan "açık" durumda olmayan) bağlıysa, bu sorunlara neden olabilir, ancak ayrık olduğu xtermiçin bu bir sorun değildir.


6
Tam olarak değil .. Programın bazı bölümleri yalnızca gerektiğinde belleğe okunur ve diğer kullanımlar için belleği boşaltmak için herhangi bir zamanda atılabilir ve bu nedenle daha sonra tekrar okunması gerekir (program bu bölümlere erişmeye çalıştığında) tekrar ).
psusi

17
RAM'de olması şart değil. Ancak, xterm çalıştırılabilir dosyaları da dahil olmak üzere dosyalar açılmadıkça silinmezler.
user253751

@ immibis, bu nedenle cevabım;)
psusi

2

Aslında bilgisayarların nasıl çalıştığının bir özelliğidir: Bir program çağrıldığında, gerçekten de belleğe yüklenir ve oradan çalışır.

Bir dosya aslında aynı şekilde çalışır. Sorunları önlemek için UNIX-ish sistemlerinde birçok dosya kilitleri oluşturur.

Asıl bilmece neden Windows'ta böyle ve benzeri şeyler yapamayacağınızdır.

Bu özellik aslında, sisteminizde aktif olan programlar dahil, tüm sistemi güncellemenize izin veren şeydir. ;)


"Gerçek gerizekalı neden Windows'ta böyle ve benzeri şeyleri
yapamıyorsunuz?
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.