Ubuntu Desktop’a belirli güncellemeler (örneğin, 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 server yeniden başlatma gerektirip gerektirmediğini komut satırından nasıl kontrol edebilirim?
/etc/motd
içinde 'Sistemin yeniden başlatılması gerekiyor' ifadesini kullanabiliyordum, ancak daha şık bir çözüm istiyorum. Ayrıca, eski sürümlerde çalışan bir çözüm istiyorum, örneğin; Hardy (8.04 LTS).
/var/run/reboot-required
dosyasının var 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
Debian-goodies paketinde checkrestart
adında bir komuttur ve bu oldukça faydalıdır. Çı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.
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
Başkaları tarafından yazılan en doğrudan yöntemlerin yanı sıra byob - GNU ekranını biraz daha kullanıcı dostu yapmak için bir komut dizisi kullanıyorsanız 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 alt satırdaki 199!
ekranından 199 güncellemenin mevcut olduğu kırmızı arka plan ile görebilirsiniz. A !!
bazılarının güvenlik güncellemeleri olduğu anlamına gelir . Ön plandaki menü, hangi durum bildirimlerinin gösterilmesi gerektiğini seçiyor.
Yeniden başlatma gerekirse, bu, alt çubukta mavi bir arka plan üzerinde beyaz metinle gösterilen (R)
sembolü ile gösterilir. Daha fazla detay ve diğer göstergeler byobu man sayfası adresinden okunabilir.
/etc/motd
dosyası, /var/run/reboot-required
dosyasından yeniden başlatmanın gerekip gerekmediği hakkında bilgi alır.
Bu dosyanın içeriğini terminalde cat /etc/motd
komutunu kullanarak kontrol edebilirsiniz.
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 görev için bir paket kurmaktan daha basit görünüyordu. Sonra sadece koşuyorum:
[email protected]:~$ rr
No reboot needed
[email protected]:~$
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 yeni. Debian germek, ancak jessie-backports içinde
update-notifier-common Xenial ve Debian Wheezy dahil olmak üzere tüm Ubuntu sürümlerinde daha eskidir. Debian Stretch veya Jessie'de değil.
(Yeniden başlatma bildirim paketi için https://feeding.cloud.geek.nz/posts/introducing-reboot-notifier/ adresinde bazı arka planlar var
Eğer bu paketleri kurmadıysanız, kurulu olan linux paketinin versiyonunu çalıştıran versiyon ile karşılaştırabilirsiniz:
[email protected]:~$ 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)
[email protected]:~$ more /proc/version
Linux version 3.16.0-4-AMD64 ([email protected]) (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.
Başka bir seçenek needrestart
paketini kurmaktır.
Sudo apt-get install needrestart
Sudo needrestart -k
Çekirdek yükseltildikten sonra needrestart kurulu olsa bile çalışıyor gibi görünüyor.
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.)