RHEL(Red Hat Enterprise Linux)系のLinuxで利用されているRPMパッケージをアップデートした後は、何も考えずサービス再起動を実施しています。ふと気になりました。
実際はサービスの再起動って必要なのか?
- サービス再起動が必要か確認したい!
- OSの状況を確認したい
Windows系OSの場合は、更新プログラムを適応すると再起動の有無をアラートで表示してくれます。同時にOS再起動の実施を確認してくれます。そう考えるとLinuxって気が利かない。
関連記事 dnf-automaticを使ってパッケージの自動アップデート Rocky ,Alma, CentOS
CentOS の代わりとなる「Rocky Linux (ロッキーリナックス)」と「AlmaLinux(アルマリナックス)」という2つの新しい Linux ディストリビューションが立ち上がりました。どちらも CentOS Linux の後継として RHEL(Red Hat Enterprise Linux)の完全クローンです。
サービス再起動が必要なプロセスを確認する
needs-restarting コマンドを利用して確認
「dnf update」「yum update」でRPMパッケージのアップデートを実施しても、起動中のサービスは古いバージョンが動作し続けます。アップデート後のバージョンを動作させるにはサービスを再起動する必要があります。
「needs-restarting」コマンドを利用すると、再起動が必要なサービスやOSの確認することができます。
needs-restarting コマンドを使う
needs-restarting のインストール
needs-restarting コマンドが利用できない場合は、yum-utils パッケージをインストールする必要があります。
RPMパッケージのアップデートに利用するコマンドは、yum から dnf にRHEL8から変更されています。Rocky Linux 9(AlmaLinux 9)でもパッケージ名は何故か「yum-utils」のままです。
早速、yum-utils パッケージをインストールします。
# dnf install yum-utils
# dnf install yum-utils Last metadata expiration check: 2:39:35 ago on Tue 04 Apr 2023 03:00:56 PM JST. Dependencies resolved. ================================================================================ Package Architecture Version Repository Size ================================================================================ Installing: yum-utils noarch 4.1.0-3.el9 baseos 36 k Transaction Summary ================================================================================ Install 1 Package Total download size: 36 k Installed size: 23 k Is this ok [y/N]: y Downloading Packages: yum-utils-4.1.0-3.el9.noarch.rpm 270 kB/s | 36 kB 00:00 -------------------------------------------------------------------------------- Total 55 kB/s | 36 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : yum-utils-4.1.0-3.el9.noarch 1/1 Running scriptlet: yum-utils-4.1.0-3.el9.noarch 1/1 Verifying : yum-utils-4.1.0-3.el9.noarch 1/1 Installed: yum-utils-4.1.0-3.el9.noarch Complete!
yum-utils のRPMは、パッケージ単体のインストールで完了します。
RPMコマンドを利用して、パッケージ内容を確認します。
# rpm -ql yum-utils
/usr/bin/debuginfo-install
/usr/bin/find-repos-of-install
/usr/bin/needs-restarting ← コマンドが同梱されている
/usr/bin/package-cleanup
/usr/bin/repo-graph
/usr/bin/repoclosure
/usr/bin/repodiff
/usr/bin/repomanage
/usr/bin/repoquery
/usr/bin/reposync
/usr/bin/repotrack
/usr/bin/yum-builddep
/usr/bin/yum-config-manager
/usr/bin/yum-debug-dump
/usr/bin/yum-debug-restore
/usr/bin/yum-groups-manager
/usr/bin/yumdownloader
/usr/libexec/dnf-utils
/usr/share/man/man1/debuginfo-install.1.gz
/usr/share/man/man1/dnf-utils.1.gz
/usr/share/man/man1/find-repos-of-install.1.gz
/usr/share/man/man1/needs-restarting.1.gz
/usr/share/man/man1/package-cleanup.1.gz
/usr/share/man/man1/repo-graph.1.gz
/usr/share/man/man1/repoclosure.1.gz
/usr/share/man/man1/repodiff.1.gz
/usr/share/man/man1/repomanage.1.gz
/usr/share/man/man1/repoquery.1.gz
/usr/share/man/man1/reposync.1.gz
/usr/share/man/man1/repotrack.1.gz
/usr/share/man/man1/yum-builddep.1.gz
/usr/share/man/man1/yum-config-manager.1.gz
/usr/share/man/man1/yum-debug-dump.1.gz
/usr/share/man/man1/yum-debug-restore.1.gz
/usr/share/man/man1/yum-groups-manager.1.gz
/usr/share/man/man1/yum-utils.1.gz
/usr/share/man/man1/yumdownloader.1.gz
needs-restarting コマンドがインストールされているのが確認できました。
サービスの再起動が必要か確認する
サービス再起動が必要かを確認するには needs-restarting コマンドに「-s」オプションをつけると、再起動の必要なサービスを確認することができます。
# needs-restarting -s
# needs-restarting -s NetworkManager.service tuned.service irqbalance.service auditd.service systemd-journald.service crond.service [email protected] polkit.service [email protected] systemd-logind.service dbus.service NetworkManager.service
再起動が必要なサービスがない場合は何も表示されません。
サーバーOSの再起動が必要か確認する
サーバーOSの再起動が必要かを確認するには needs-restarting コマンドに「-r」オプションをつけると、OS再起動を確認することができます。
# needs-restarting -r
# # needs-restarting -r Core libraries or services have been updated since boot-up: * dbus * dbus-broker * glibc * kernel * linux-firmware * systemd Reboot is required to fully utilize these updates. More information: https://access.redhat.com/solutions/27943
再起動が必要ない場合は、必要ないと表示されます。
# # needs-restarting -r No core libraries or services have been updated since boot-up. Reboot should not be necessary.
あとがき
ピンポイントでパッケージをインストールする場合は、すぐにサービスを再起動する手順で実施しています。ただ、「dnf update」「yum update」のように全体的にバージョンアップする場合は必要なサービスが判らなくなってしまいます。
OS再起動が出来ない場合もあるので、対象サービスを確実にアップデートさせる場合にはneeds-restarting コマンドを実行し、対象を絞り込みサービスを再起動させます。