Yeniden başlatma ne zaman gereklidir?


27

Çekirdeği yükseltmenin yanı sıra, yeniden başlatılması gereken Linux sisteminde herhangi bir değişiklik var mı? Bir yeniden başlatmanın işleri kolaylaştırdığı durumlar olduğunu biliyorum, ancak yeniden başlatma dışında gerçekleştirilemeyecek durumlar var mı?

Açıklığa kavuşturmak için: Bir donanım arızası sıkıntısı çekmeyen tipik bir masaüstü veya sunucu sistemi düşünüyorum.


3
her şey yeniden başlatmadan yapılabilir. çekirdeği değiştirmek bile ksplice kullanılarak yapılabilir, böylece çekirdeğinizi sıcak olarak değiştirebilirsiniz. Dikkate almanız gereken tek şey, her şeyi yeniden başlatmadan yapmak çok karmaşık olabilir
Kiwy

4
Sorunuz çok geniş, çünkü “Linux sistemi” çok farklı anlamlara gelebilir.
Zrin

Ayrıca “herhangi bir değişiklik” oldukça farklı durumlar anlamına gelebilir. MD aynanın bir parçası olan arızalı sabit sürücüden kurtarma böyle bir değişiklik midir? Eğer öyleyse, o zaman - ne yazık ki - bazen yeniden başlatma gerekebilir, çünkü örneğin bazı HDD arızaları (bazı HDD denetleyicilerinde) sistemi tepkisiz hale getirebilir. Ama muhtemelen böyle "değişiklikler" hakkında soru sormuyorsunuz ...
Zrin

3
@Kiwy Teknik olarak ksplice çekirdeği değiştirmez . Ksplice, çalışan bir çekirdeğin çalışırken düzeltilmesini sağlar. Yeni bir çekirdek görüntüsünün bellekte çalışan bir çekirdeğin "üzerine" yüklenmesine izin veren kexec'i düşünüyor olabilirsiniz .
Thomas Nyman,

Bu bana hatırlatıyor, Windows XP (hiçbir zaman ötesine geçmedim), Windows kurulumundan bu yana 4 yıl boyunca açılmamış IE8'i (veya herhangi bir sayıyı) güncellemiş olsa bile, yeniden başlatma konusunda hiç bir zaman kapanmıyor ve tarayıcı.
Shahbaz

Yanıtlar:


44

Akla birkaç şey geliyor:

  • Bir çekirdek paniğinden kurtarma

    Bir çekirdek paniği, tanımı gereği, çekirdeği yeniden başlatmadan elde edilemez.

  • Sizi terminal erişimi olmayan askılardan kurtarın

    Sistem yanıt vermiyorsa ve kurtarma komutları vermenin bir yolu olmadan mahsur kaldıysanız, yapabileceğiniz tek şey yeniden başlatmaktır. Genellikle manuel güç çevriminden kaçınmak istersiniz. Bu tür durumlarda, Linux çekirdeği acil durumlarda makineyi yeniden başlatmak için kullanılabilecek Magic SysRq desteğine sahiptir.

    CONFIG_MAGIC_SYSRQSeçenek çekirdek yapılandırmasında etkinleştirilmiş ve seçenek etkin olduğu sürece kernel.sysrq sysctl, sihirli SysRq tuş bileşimleriyle doğrudan çekirdeğe komutlar verebilirsiniz:

    Alttaki Alt+ işaretinin basılı tutmanın , ardından tuşun basılı tutulması (genellikle tuş) SysRqanlamına geldiğini unutmayın . Alt SysRqPrintScrn

    1. Alt+ SysRq+ r: klavyenin kontrolünü yeniden kazandı
    2. Alt+ SysRq+ e: SIGTERMtüm işlemlere gönderme init, onlara incelikle sonlandırma şansı vermek dışında
    3. Alt+ SysRq+ i: sonlandırmaya zorlama SIGKILLdışında tüm işlemlere gönderinit
    4. Alt+ SysRq+ s: tüm bağlı dosya sistemlerini senkronize etmeye çalış
    5. Alt+ SysRq+ u: tüm dosya sistemlerini salt okunur olarak birleştir
    6. Alt+ SysRq+ b: yeniden başlat veya

      Alt+ SysRq+ o: kapatma

    Büyüleyici bir yeniden başlatma girişiminde bulunmak üzere, sihirli SysRq tuş birleşimlerinin hatırlatması şöyledir:

    " R ' eboot e ven I f S istem u tterly B Roke "

    Başsız sunucular için, bir ağ üzerinden uzak SysRq dizilerini etkinleştiren bir iptables hedefi bile vardır .

  • Unbootable durumdan kurtarma

    Sistem zaten normal bir önyüklemenin mümkün olmadığı bir duruma getirilmişse (örneğin, başarısız bir sistem yükseltmesi, bozuk dosya sistemi vb. Nedeniyle), sistemdeki kurtarma konsoluna erişmenin tek yolu yeniden başlatmak olabilir. uygun önyükleme zamanı seçeneklerini kullanarak.

  • Önyükleme zamanı çekirdek parametrelerini değiştirme

    Bazı çekirdek parametreleri (örneğin auditçekirdek denetimini etkinleştirmek / devre dışı bırakmak için) yalnızca çekirdek önyükleme sırasında yüklendiğinde ayarlanabilir.


3
“Sistem Tamamen Kırıldı Olsa Bile Yeniden Başlayın” Bu soruyu sadece durumda tercih ediyorum, ama bunu asla unutamayacağımı sanmıyorum.
embedded.kyle

1
Bir kexec kullanarak panikten kurtulabileceğiniz ve tam bir yeniden başlatmadan kaçınabileceğinize dikkat etmeniz gerekir. Bu, aynı zamanda, önlenemez durum noktasından çıkmak için de aynı şekilde geçerlidir. (en azından bir x86 sisteminde, hiçbir şekilde aynı şey değildirler). Ancak bu cevabın geri kalanı için +1.
Vality

@Vality Yorumunuz için teşekkür ederiz. Eğer kexec yeniden başlatma gerektiriyorsa, belki de bir dereceye kadar görüş açısına göre değişir. Kdump belgeleri , örneğin sistem çekirdeğin bellek görüntüsü koruyan bir yeniden başlatma olarak kexec-on-panik tarif etmektedir. Önyüklenemez durum hakkındaki noktaya gelince, kexec'in yardımcı olmadığı bootloader'ın yanlış yapılandırılması (örneğin çekirdeğin ilk yüklenememesi) gibi şeyler de düşündüm. Sorunun niteliği göz önüne alındığında, anlambilim ile ilgili bazı görüş farklılıklarının kaçınılmaz olduğunu düşünüyorum.
Thomas Nyman,

@ThomasNyman Ayrıntılı cevabınız için teşekkür ederim, doğru olduğunu düşündüğüm soruyu inceleyin. Bence kexec hakkında konuşmak, muhtemelen hedef kitleye ya da bu soruya ihtiyaç duymadan işleri karmaşık hale getirecektir. Ayrıca boot-loader hatalarıyla ilgili iyi bir noktaya değiniyorsunuz.
Vality

Bu küçük SysRq'nin baskı ekranında yazıldığını hiç farketmemiştim! Bu harika. Çekirdek modül programlamasını öğrenirken bunu bilseydim keşke!
Shahbaz

2

Nerede yeniden başlatmak istediğimi düşünebileceğim iki kez var:

  1. Sistemin doğru durumda açılabildiğinden emin olmam gerektiğinde.

    Bir keresinde, çalıştığı sırada yapılandırılmış bir cini olan bir sistem üzerinde çalıştım. Birkaç yıl çalıştıktan sonra, bir elektrik kesintisi yeniden başlatılmasına neden oldu, ancak arka plan programı başlangıç ​​sürecinin bir parçası değildi ve hiç kimse yıllar önce nasıl yapılandırıldığına dair bir ipucu yoktu. Nasıl yapılandırılacağına karar verdiğimizde sistem günlerce kapalıydı.

    Aslında yeniden başlatma, bir elektrik kesintisinden sonra sisteminizin düzgün şekilde yeniden başlatılacağından emin olmanın tek yoludur.

  2. Bir sistem kütüphanesi güncellendiğinde.

    Diyelim ki sistemdeki birçok uygulama / sunucu ile paylaşılan bir kütüphanede büyük bir güvenlik açığı tespit edildi. Kitaplığı yeniden başlatmadan güncelleyebilirsiniz, ancak güvenli olmayan kitaplık yüklenirken hala kaç işlem çalışıyor? Eski kütüphaneyi kullanarak bir şeyi titizlikle yeniden başlatabilirsiniz (eğer çözebiliyorsanız), ancak bu hataya açıktır ve yeniden başlatılmasından daha uzun sürebilir.

    Yeniden başlatma, çalışan tüm işlemlerin hala eski, buggy kitaplığını kullanmadığından emin olmanın en iyi yoludur.


İyi bir paket yöneticisi kullanıyorsanız, belirli bir kütüphaneye bağlı olarak tüm ikili dosyaları bulmanın daha iyi yolları vardır. Gentoo'dan revdep-yeniden inşa akla geliyor.
Spidey

1
@Spidey: Bu ikili dosyaları yeniden oluşturduğunuzda, buggy kütüphanesinde çalışan eski işlemlerin olmadığından nasıl emin olabilirsiniz?
Gabe

1
Hangi kumandanların rahatsız edici kütüphanelerin yüklü olduğunu nereden biliyorsunuz?
Gabe

1
Örneğin, kütüphaneleri lsofyükseltmeden önce hangi işlemlerin kütüphanelerin kendi bellek alanlarıyla eşleştirildiğini kontrol edebilirsiniz .
Thomas Nyman

1
@Gabe Elbette, ve bunun yeniden başlatmak için mükemmel bir neden olduğu konusunda hemfikir olmama rağmen, OP açıkça hangi yeniden başlatma için daha uygun olduğunu sormuyor, ancak yeniden başlatma için kesinlikle gerekli .
Thomas Nyman

0

Yazılım yapılandırmasında planlanan değişiklikler yapmak ve kusursuz çalışan donanım (henüz böyle bir şey görmedim) ve hatasız yazılımı (bildiğiniz ...) varsaymak istiyorsanız, yalnızca çekirdekteki veya sürücüdeki bir hata sizi zorlar reboot. :)

Bunun dışında ... initTek bir kullanıcı moduna geçmeden ve aslında bir yeniden başlatmadan çok farklı olmayan bir sihir yapmaksızın değiştirmenin mümkün olup olmadığından emin değilim .

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.