Makinenin yeniden başlatılması gerekip gerekmediğini komut satırından nasıl anlarım?


256

Ubuntu Desktop’a belirli güncellemeler (örn. Yeni bir çekirdek) yüklediğinizde, yeniden başlatmanın gerekli olduğuna dair bir işaret alırsınız (Lucid’de, oturum kapatma simgesi kırmızıya döner).

Bir Ubuntu sunucusunun yeniden başlatılması gerekip gerekmediğini komut satırından nasıl kontrol edebilirim ?

'Sistemin yeniden başlatılması gerekiyor' mesajını verebilirim /etc/motdama daha zarif bir çözüm istiyorum. Ayrıca, eski sürümlerde çalışan bir çözüm istiyorum, örneğin Hardy (8.04 LTS).


Sunucuyu koruyorsanız, yakında yeniden başlatmanız gerekip gerekmediği konusunda bir anlam ifade edersiniz. Çoğu güncellemenin yeniden başlatılması gerekmez veya yalnızca hizmeti yeniden başlatması gerekir (otomatik olarak yapması gerekir).
eXlin

Yanıtlar:


289

Dosyanın /var/run/reboot-requiredvar olup olmadığını kontrol edebilirsiniz .

Örneğin, bunlardan herhangi biri, yeniden başlatmanız gerekmiyorsa, "böyle bir dosya yok" veya "dosya bulunamadı" dır, aksi takdirde (yeniden başlatmanız gerekirse) dosya var olur ve bu komutlar dosyayla ilgili bilgileri gösterir:

file /var/run/reboot-required
stat /var/run/reboot-required
ls /var/run/reboot-required

Bir bash betiğinde şunları kullanabilirsiniz:

#!/bin/bash
if [ -f /var/run/reboot-required ]; then
  echo 'reboot required'
fi

1
Bu çalışır ve Hardy üzerinde de çalışır. (Dapper - 6.06'da çalışmıyor - hala bir makinede sahibim. Zor.) Bu arada, / var / run / reboot gerekli dosya / usr / share / update-notifier / notify-reboot tarafından oluşturuldu. - Çeşitli paketlerin kaleci komut dosyalarından çağrılan gerekli.
Marius Gedminas

2
Güncelleme bildirim paketini kurarsam Dapper üzerinde de çalışırdı, ancak 120 mega değerindeki GNOME ürününü eski sunucuma çekmek istiyor.
Marius Gedminas

10
Daha iyi yükleme güncelleme-bildirici-ortak, herhangi bir GUI ürününe bağlı değildir (ancak Dapper için mevcut değildir).
Marius Gedminas

1
FWIW, güncelleme bildiricisi-ortak Lucid sunucusunda varsayılan olarak yüklü değildir.
Marius Gedminas

5
Teşekkürler! ve dosya /var/run/reboot-required.pkgs, yeniden başlatmayı gerektiren paketleri listeler.
nealmcb

44

Debian-goodies paketinde checkrestartoldukça kullanışlı olan bir komuttur . Çıkışı tam bir yeniden başlatmadan kaçınmanıza yardımcı olabilir.

Hangi çalışan uygulamaların, uygulama çalışırken yükseltilen paylaşılan kütüphaneleri yüklediğini gösterir. Ardından uygulamaları ve hizmetleri manuel olarak yeniden başlatır ve yeniden başlatmanın önüne geçersiniz. Yine de çekirdek güncellemelerinde yardımcı olmuyor.


1
Tam bir yeniden başlatmadan kaçınmama nasıl yardımcı olabilir?
Oxwivi

11
Hangi çalışan uygulamaların, uygulama çalışırken yükseltilen paylaşılan kütüphaneleri yüklediğini gösterir. Ardından uygulamaları ve hizmetleri manuel olarak yeniden başlatır ve yeniden başlatmanın önüne geçersiniz. Yine de çekirdek güncellemelerinde yardımcı olmuyor.
aquaherd

Bu en iyi cevap olmalı. Çok yararlı. OpenSUSE, yerleşik bir araca sahiptir (ve onu nasıl çalıştırabilmenize yardımcı olur). Utanç Ubuntu sadece "yeniden başlatma, yeniden başlatma" gider. Örneğin, colord burada yeniden başlatılması gerekiyordu. Bu nedenle, yeniden başlatmaya gerek yok.
Shiki

@aquaherd Çok yardımcı bir yorum - cevabınıza taşımaya değebilir mi?
Duncan Jones

33

Normalde eğer dosya

/var/run/reboot-required 

yeniden başlatmanız gereken var. Bu dosyanın orada olup olmadığını gnome-terminalinde bu basit komutu kullanarak görebilirsiniz.

ls /var/run/reboot-required

Bu dosya, onu oluşturmak için kullanılan güncelleme-bildirici-ortaktan artık oluşturulmuyor gibi görünüyor.
Scott

17

GNU ekranını biraz daha kullanıcı dostu yapmak için bir komut dosyası dizisi olan byobu kullanıyorsanız, başkalarının yazdığı en doğrudan yöntemlerin yanı sıra kullanışlı bir gösterge vardır . Ekranın altında bir dizi bilgi gösterir ve yeniden başlatmanın gerekip gerekmediğini içerir - güncellemelerin mevcut olup olmadığı, süre, çalışma süresi, kullanılan hafıza ...

Bu ekran görüntüsünde 199!alt satırda kırmızı arka plan ile 199 güncellemenin olduğunu görebilirsiniz. Bunun !! anlamı, bazılarının güvenlik güncellemeleri olduğudur . Ön plandaki menü, hangi durum bildirimlerinin gösterilmesi gerektiğini seçiyor.

Bir yeniden başlatma gerekiyorsa, bu, (R)mavi bir arka plan üzerinde beyaz metinle alt çubukta gösterilen sembolle belirtilecektir . Daha fazla detay ve diğer göstergeler byobu man sayfasından okunabilir .

ekran görüntüsü


9

/etc/motdDosya bir yeniden başlatma gerekli olup olmadığı konusunda kendi bilgi alır /var/run/reboot-requireddosyası.

cat /etc/motdKomutunu kullanarak bu dosyanın içeriğini terminalde kontrol edebilirsiniz.


update-notifier-common bunu oluşturmak için kullanılır, ancak artık kullanmaz
Scott

8

Yüklü yeniden başlatma bildiricisi veya güncelleme bildiricisi ortak paketleriniz varsa, / var / run / reboot-zorunlu ve /var/run/reboot-required.pkgs dosyalarını alırsınız.

reboot-notifier , Ubuntu Wily ve Xenial'da daha yenidir. Debian germek, ancak jessie-backports içinde

update-notifier-common Xenial ve Debian Wheezy dahil tüm Ubuntu sürümlerinde daha eskidir. Debian Stretch veya Jessie'de değil.

( Https://feeding.cloud.geek.nz/posts/introducing-reboot-notifier/ adresindeki yeniden başlatma bildirim paketinin arka planı vardır )

Eğer bu paketleri kurmadıysanız, kurulu olan linux paketinin versiyonunu çalıştıran versiyon ile karşılaştırabilirsiniz:

tim@tramp:~$ dpkg -l linux-image-*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                              Version               Architecture          Description
+++-=================================-=====================-=====================-=======================================================================
ii  linux-image-3.16.0-4-amd64        3.16.7-ckt20-1+deb8u4 amd64                 Linux 3.16 for 64-bit PCs
ii  linux-image-amd64                 3.16+63               amd64                 Linux for 64-bit PCs (meta-package)
tim@tramp:~$ more /proc/version
Linux version 3.16.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian <b>3.16.7-ckt20-1+deb8u3</b> (2016-01-17)

Burada en son kurulu çekirdeğin 3.16.7-ckt20-1 + deb8u4 olduğunu, ancak çekirdeğin çalıştığını 3.16.7-ckt20-1 + deb8u3 olduğunu görebilirsiniz. Yani bu sistemin yeniden başlatılması gerekiyor. Sonunda u4 vs u3.

Yukarıdaki kutuyu kaydırmanız gerekebilir. / Proc / version'da, satırın sonundaki önemli olan sürümdür.

Çok küçük sürüm kodu değişikliği, bir Debian güvenlik çekirdeği güncellemesi için tipiktir.

needrestart

Başka bir seçenek de needrestartpaketi kurmak .

sudo apt-get install needrestart
sudo needrestart -k

Çekirdek yükseltildikten sonra needrestart kurulu olsa bile çalışıyor gibi görünüyor.


1
İlk paragrafınız Ubuntu sürümleriyle nasıl ilişkilidir?
muru

İyi bir nokta. Teşekkürler. Bu kadar uzun testler yaparak ve kaçırdığım paketleri denedim. Daha net ve ubuntu paket bilgisini içerecek şekilde düzenleme yaptım.
Tim Bray,

Yeniden başlatmayı gerektiren bir güncellemeden sonra 8.04’e geri dönersek, Cog kırmızıya dönerdi. Bu davranışı nasıl geri alabilirim?
PenguinCSC

Ubuntu dpkg-query: no packages found matching linux-image-*
14.04

Unknown option: kUbuntu 14.04'te.
Cees Timmerman

7

Aşağıdaki .bash-aliases dosyama ekledi:

alias rr='if [ -f /var/run/reboot-required ]; then echo "reboot required"; else echo "No reboot needed"; fi'

Bu nispeten basit bir görev için bir paket kurmaktan daha basit görünüyordu. Sonra sadece koşuyorum:

you@somewhere:~$ rr
No reboot needed
you@somewhere:~$ 

1

Zavallı adamın çözümü:

#!/bin/bash
default=$(sed -n 's/^default[   ]*\([0-9][0-9]*\).*/\1/p' /boot/grub/menu.lst | tail -1)
if [ "$default" = "" ]; then default=0; fi

want=$(sed -n 's/^kernel[       ]*\/boot\/vmlinuz-\([^  ]*\).*/\1/p' /boot/grub/menu.lst | sed -n "$((default+1))p")

running=$(uname -r)

if [ "$running" = "$want" ]
then
        : OK, do nothing
else
        echo "Running $running, want $want. Reboot required."
fi

(Dikkat: İçinde beyaz boşluk olan üç köşeli ayraç durumu "[<boşluk> <tab>]" olmalıdır.)


grub 2 artık /boot/grub/menu.lst dosyasını kullanmıyor, artık /boot/grub/grub.cfg.
Marius Gedminas

-1

Değil soruya bir cevap, tepkilerin birçok ilgili uyarı: /var/run/reboot-requiredolduğu değil bir yeniden başlatma aslında gerekli olup olmadığına güvenilir bir kaynak.

Basit test: yeni bir çekirdek kullanılabilir olduğunda, kurun, yeniden başlatın. Yeniden başlattıktan sonra, apt autoremoveartık eski, artık gerekli olmayan çekirdeklerden kurtulmak için koşun . Bunu çalıştırdıktan sonra, tamamen saçmalık olan bir yeniden başlatmanın gerekli olduğunu belirtir.


3
Pekala, bir çekirdeği kaldırmak, grub config dosyanızı yeniden oluşturur; bunun ardından, yeniden başlatılabildiğinizi doğrulamak için muhtemelen yeniden başlatmak iyi bir fikirdir. En azından bu (yanlış) özelliği kendime haklı gösteriyorum.
Marius Gedminas 14:17
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.