本篇介紹 CentOS Linux 系統在進行軟體套件更新之後,該如何判斷作業系統是否需要重新啟動。
Linux 伺服器的系統與軟體更新是定期需要做的工作,某些重要的系統套件在更新完之後,可能會需要重新啟動對應的服務,甚至若有更新到 Linux 核心的時候,還會需要重新開機,而如何判斷哪些服務要重新啟動,以及何時需要重新開機,就是更新後常會遇到的小問題。
needs-restarting
是一個 yum-utils
套件中的一個小工具,它可以快速檢查目前的系統狀態,列出需要重新啟動的服務,並且檢查 Linux 核心的版本,判斷是否需要重新開機。
使用前先用 yum
安裝 yum-utils
套件:
# 安裝 yum-utils 套件
sudo yum install yum-utils
檢查 Linux 系統是否需要重新開機
執行 needs-restarting
指令搭配 -r
參數可以檢查 Linux 核心版本,判斷作業系統是否需要重新啟動:
# 檢查作業系統是否需要重新啟動 needs-restarting -r
Core libraries or services have been updated: kernel -> 3.10.0-957.1.3.el7 kernel -> 3.10.0-957.5.1.el7 dbus -> 1:1.10.24-13.el7_6 kernel -> 3.10.0-862.14.4.el7 openssl-libs -> 1:1.0.2k-16.el7_6.1 systemd -> 219-62.el7_6.5 glibc -> 2.17-260.el7_6.3 linux-firmware -> 20180911-69.git85c5d90.el7 kernel -> 3.10.0-957.10.1.el7 kernel -> 3.10.0-862.11.6.el7 Reboot is required to ensure that your system benefits from these updates. More information: https://access.redhat.com/solutions/27943
如果輸出的訊息中,有 Reboot is required ...
這樣的訊息,就代表目前運行的 Linux 核心版本過舊,需要重新開機。
另一個檢查方式是看 needs-restarting
指令執行的傳回值,如果是 0
就代表不需要重新開機,而若是 1
則代表需要重新開機:
# 查看傳回值 echo $?
1
若要立即重新開機的話,就執行:
# 立即重新開機
sudo reboot
或是讓系統排定在指定的時間點再進行重新開機:
# 指定時間重新開機 shutdown -r 21:30 &
檢查服務是否需要重新啟動
若執行 needs-restarting
並加上 -s
參數,可以列出需要重新啟動的系統服務:
# 檢查是否有服務需要重新啟動 sudo needs-restarting -s
chronyd.service systemd-logind.service NetworkManager.service rsyslog.service mariadb.service rh-php71-php-fpm.service auditd.service getty@tty1.service serial-getty@ttyS0.service sshd.service nginx.service firewalld.service dbus.service systemd-journald.service systemd-udevd.service polkit.service
若要重新啟動指定的服務,可以使用 systemctl
搭配 restart
參數,例如重新啟動 sshd
則執行:
# 檢查是否有服務需要重新啟動
sudo systemctl restart sshd
參考資料:Server Fault