Yeniden başlatma neden yalnızca bazı güncelleştirmeler için gereklidir?


18

Ubuntu neden daha fazla güncellemede yeniden başlatma gerektirmiyor? Çekirdek güncellemeleri ve video sürücüleri gibi şeyler için, değişiklikleri yeniden başlatmadan yükleyemediğini biliyorum. Ancak, genellikle yeniden başlatma gerektirmeyen oldukça temel paketlerin daha temel güncellemelerini merak ediyorum. Telepathy, glibc, gtk, vb. Yeni sürüm bir güncellemeden hemen sonra çalışıyor mu?

Başka bir örnek Gwibber olabilir. Kısa süre önce gwibber çalışırken Güncelleme Yöneticisi aracılığıyla gwibber'i aldım ve güncelledim. Güncelleme başarıyla tamamlandı. Gwibber yeni sürümü manuel olarak yeniden başlatmadan çalıştırıyor mu? Diğer paketler için de aynı şey geçerli mi? (Ben mysql ve apache gibi bazı güncelleme otomatik olarak yeniden başlatmak gibi biliyorum). Otomatik olarak yeniden başlatılmayan paketler için bu, güvenlik düzeltmesi için bir güvenlik sorunu olamaz mı?

Bu, yaklaşık bir hafta boyunca OS X çalıştırıyorum ve çekirdek / video sürücüsü ile ilgili olmasa bile neredeyse her güncellemenin yeniden başlatılmasını gerektirdiği için (söyleyebildiğim kadarıyla - size çok fazla bilgi vermiyorlar) ). Bir arkadaşım, Apple kuvvetlerinin çoğu durumda "her ihtimale karşı" yeniden başladığını ve yeniden başlatmazsanız garip olacağını söyledi. Windows en kötüsüdür, çünkü hemen hemen her yükleme / kaldırma veya güncelleme yeniden başlatma gerektirir (genellikle kapatmaları çok uzun zaman almaya zorlar ). Bu, bu mekan için biraz geniş olabilir, ancak neden farklı işletim sistemleri bunu farklı şekilde ele alıyor? Veya, Ubuntu'ya daha spesifik: Ubuntu neden daha katı bir yeniden başlatma politikası izlemiyor?

Yanıtlar:


23

Windows'ta bir dosyayı her açışınızda veya yürüttüğünüzde, Windows dosyayı yerine kilitler (bu bir basitleştirme, ancak genellikle doğrudur.) Başka bir işlemin özel bir kilidi olduğu için bir dosyayı silemeyeceğiniz sinir bozucu hatalarla karşılaşmış olabilirsiniz. o. Bu nedenle, Windows kendini güncellemek zorunda kaldığında, etkili olması için yeniden başlatmanız gerekir. Windows, bir sonraki açışında dosya değiştirme ve silme etkinliklerini sıraya koyacaktır (hiçbir şeyin üzerinde herhangi bir kilit olmadığında).

Öte yandan, Linux'un kilitli dosya değil, diskteki temel verilerin olduğu bir mekanizma vardır. Bu önemsiz bir farklılaşma gibi görünebilir, ancak dosyanın zaten açık olan herhangi bir programı bozmadan, dosyanın dosya sisteminin içindekiler tablosundaki kaydı silinebileceği anlamına gelir. Bu nedenle, bir dosyayı hala yürütülürken veya başka bir şekilde kullanımdayken silebilirsiniz ve dosya tablosundaki girişi gitmiş olsa bile, bazı işlemler için açık bir tutamağa sahip olduğu sürece diskte var olmaya devam eder. Bu, Linux'un bir programı hala çalışırken tamamen değiştirmesini ve ardından programı yeniden başlatmasını veya işlemin doğal olarak çıkmasını beklemesini sağlar. Eski örnek öldürüldüğünde,

Bu nedenle, belirli bir dosya bir şekilde özel olmadığı sürece (örneğin, çekirdek görüntü dosyası veya benzer düşük seviyeli sistemlere ait dosyalar gibi) güncelleyici genellikle bu şekilde yerinde güncellenebilir. Eminim bunun iyi bir fikir olmayacağı özel durumlar ve durumlar vardır, ancak çoğu durumda iyidir.

OS X'in neden böyle yaptığı konusunda, "her ihtimale karşı" teorisi akla yatkın geliyor.


1
Amazed'in noktasını göstermek için bir test.py dosyası oluşturun: #!/usr/bin/env python print raw_input()Bunu python test.pyveya ile çalıştırın chmod +x test.py && ./test.pyve sizden giriş yapmanızı istediğinde rm test.py.
raylu

Kullanıcı programlarının çoğunun otomatik olarak yeniden başlatılmamasının nedeni, çok kısa bir ömre sahip oldukları ve sistemi değiştirmek için neredeyse hiçbir ayrıcalık bulunmadığı düşünülmektedir. Endişeniz varsa, oturumu kapatıp tekrar girebilirsiniz, bu açık olan tüm programları kapatacaktır.
LassePoulsen

2
Özellikle, dpkg dosyaları foo.dpkg-new dosyasına yazarak ve daha önce var olan herhangi bir önceki dosyanın üstünde yeniden adlandırarak, kitaplıkların ve yürütülebilir dosyaların yerinde yerinde yükseltmelerine olanak tanıyarak yükler.
Colin Watson
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.