Linux

Yeniden Başlatılması Gereken Servisler Nasıl Tespit Edilir?3 min read

Ara 16, 2020 4 min

Yeniden Başlatılması Gereken Servisler Nasıl Tespit Edilir?3 min read

Okunur: 4 dakika

Sistemi güncellediğimiz zaman hangi uygulamanın yeniden başlatma istediğini bilmemizin bir kaç yolu elbette var, ancak size en kolay olanını göstereceğim. Bu işi yapmak için ufak bir araçtan faydalanacağız adı da needrestart bu küçük uygulama aslına bakarsanız oldukça işlevsel

Kurulumunu çok basit bir şekilde yapıyoruz.

apt install needrestart

Kullanabileceğiniz komutları sıralamak için needrestart --help komutunu kullanabilirsiniz. Ben bu örnekte yer alan -l, ve -b kullanacağım.

[email protected]:~# needrestart --help

needrestart 3.4 - Restart daemons after library updates.

Authors:
  Thomas Liske <[email protected]>

Copyright Holder:
  2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]

Upstream:
  https://github.com/liske/needrestart

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

Usage:

  needrestart [-vn] [-c <cfg>] [-r <mode>] [-f <fe>] [-u <ui>] [-bkl]

    -v          be more verbose
    -q          be quiet
    -m <mode>   set detail level
        e       (e)asy mode
        a       (a)dvanced mode
    -n          set default answer to 'no'
    -c <cfg>    config filename
    -r <mode>   set restart mode
        l       (l)ist only
        i       (i)nteractive restart
        a       (a)utomatically restart
    -b          enable batch mode
    -p          enable nagios plugin mode
    -f <fe>     overwrite debconf frontend (DEBIAN_FRONTEND, debconf(7))
    -u <ui>     use preferred UI package (-u ? shows available packages)

  By using the following options only the specified checks are performed:
    -k          check for obsolete kernel
    -l          check for obsolete libraries
    -w          check for obsolete CPU microcode

    --help      show this help
    --version   show version information

[email protected]:~# 

Düzgün bir çıktı alabilmek için needrestart -b komutunu kullanıyorum bu komut bana direk olarak hangi servislerin yeniden başlatma istediğini kernel’in ne durumda olduğunu gösteriyor.

[email protected]:~# needrestart -b
NEEDRESTART-VER: 3.4
NEEDRESTART-KCUR: 4.19.0-13-amd64
NEEDRESTART-KEXP: 4.19.0-13-amd64
NEEDRESTART-KSTA: 1
NEEDRESTART-SVC: clamav-daemon.service
NEEDRESTART-SVC: nginx.service
NEEDRESTART-SVC: systemd-journald.service
NEEDRESTART-SVC: systemd-logind.service
NEEDRESTART-SVC: systemd-resolved.service
NEEDRESTART-SVC: systemd-timesyncd.service
NEEDRESTART-SVC: systemd-udevd.service
NEEDRESTART-SVC: unattended-upgrades.service

Yukarıdaki çıktıda dikkat etmeniz gereken şeylerden ilki NEEDRESTART-KSTA: 1 eğer bu değer 0 bilinmeyen bir sorun olduğunu, 2 veya 3 ise yeniden başlatma gerektiği anlamına gelmektedir. NEEDRESTART-SVC: ile devam eden satırlar ise yeniden başlatılması gereken servisleri belirtir. Yani daha öncesinden güncelleme yapılmış ancak servis yeniden başlatılmamış anlamına gelmektedir.

Eğer daha insancıl bir şekilde çıktı almak ve kullanıcı etkileşimine girmek isterseniz aşağıdaki komutu kullanmanız gerekmektedir. Bu yönergeye github sayfası üzerinden erişebilirsiniz.

[email protected]:~# needrestart -u NeedRestart::UI::stdio -r l
Scanning processes...                                                                                                                                                                                             
Scanning candidates...                                                                                                                                                                                            
Scanning linux images...                                                                                                                                                                                          

Running kernel seems to be up-to-date.

Services to be restarted:
 systemctl restart clamav-daemon.service
 systemctl restart nginx.service
 systemctl restart systemd-journald.service
 systemctl restart systemd-resolved.service
 systemctl restart systemd-timesyncd.service
 systemctl restart systemd-udevd.service

Service restarts being deferred:
 systemctl restart systemd-logind.service
 systemctl restart unattended-upgrades.service

No containers need to be restarted.

User sessions running outdated binaries:
 root @ session #1: dhclient[16648,16708,16767,16992,17133,17192]
 root @ user manager service: systemd[2486]

Peki bu belirtilen servisleri tek tek yeniden başlatmamız mı gerekiyor? Tabii ki de hayır. Uygulama bizim için bunu da yapıyor ve tespit ettiği servisleri kendisi yeniden başlatabiliyor.

[email protected]:~# needrestart -u NeedRestart::UI::stdio -r a
Scanning processes...                                                                                                                                                                                             
Scanning candidates...                                                                                                                                                                                            
Scanning linux images...                                                                                                                                                                                          

Running kernel seems to be up-to-date.

Restarting services...
 systemctl restart clamav-daemon.service nginx.service systemd-journald.service systemd-resolved.service systemd-timesyncd.service systemd-udevd.service

Service restarts being deferred:
 systemctl restart systemd-logind.service
 systemctl restart unattended-upgrades.service

No containers need to be restarted.

User sessions running outdated binaries:
 root @ session #1: dhclient[16648,16708,16767,16992,17133,17192]
 root @ user manager service: systemd[2486]

Gördüğünüz gibi belirttiği servisleri yeniden başlattı. needrestart -u NeedRestart::UI::stdio -r l komutu ile tekrar kontrol ediyoruz.

[email protected]:~# needrestart -u NeedRestart::UI::stdio -r l
Scanning processes...                                                                                                                                                                                             
Scanning candidates...                                                                                                                                                                                            
Scanning linux images...                                                                                                                                                                                          

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

User sessions running outdated binaries:
 root @ session #1: dhclient[16648,16708,16767,16992,17133,17192]
 root @ user manager service: systemd[2486]

Görüldüğü gibi artık sistemde yeniden başlatılması gereken herhangi bir servis kalmadı, güncellemeler imiz sorunsuz bir şekilde sistemimize uygulandı.

Sistem Uzmanı, Linux Hacısı, El-Kernel