CentOS7:パッケージ更新時に再起動が必要かを確認する方法(needs-restarting)

CentOS7でパッケージを更新した際に、マシンの再起動が必要なのか迷うことがあります。Windowsだと、再起動が必要なときは再起動ボタンなどが表示されてわかりやすいのですが、CentOS7では特にそのような表示はされません。

ここでは、パッケージ更新時に再起動が必要かどうかを確認してくれるツール「needs-restarting」を紹介します。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

インストール

「needs-restarting」は「yum-utils」パッケージに含まれているツールです。次のコマンドでインストールします。

yum install yum-utils

使用方法

パッケージ更新後に、needs-restartingコマンドを実行します。

再起動が必要なプロセスを一覧表示

再起動が必要なプロセスを一覧表示するには、オプションなしで実行します。

needs-restarting

1096 : /usr/libexec/postfix/master -w
678 : /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
679 : /usr/sbin/NetworkManager --no-daemon
668 : login -- root
9606 : pickup -l -t unix -u
6879 : /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf /var/lib/NetworkManager/dhclient-7a29d8a3-4a
56-4bf4-8024-5e526165b1d8-eth0.lease -cf /var/lib/NetworkManager/dhclient-eth0.conf eth0
646 : /usr/sbin/chronyd
615 : /sbin/auditd
1 : /usr/lib/systemd/systemd --switched-root --system --deserialize 22
473 : /usr/lib/systemd/systemd-journald
654 : /usr/lib/polkit-1/polkitd --no-debug
652 : /usr/sbin/irqbalance --foreground
644 : /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
1100 : qmgr -l -t unix -u
509 : /usr/lib/systemd/systemd-udevd
1015 : /usr/sbin/sshd -D
1013 : /usr/bin/python -Es /usr/sbin/tuned -l -P
9686 : sshd: root@pts/0
500 : /usr/sbin/lvmetad -f
653 : /usr/lib/systemd/systemd-logind

マシン再起動の要否を確認する

マシンの再起動が必要かどうかを確認するには「-r」オプションを付けて実行します。

needs-restarting -r

Core libraries or services have been updated:
  kernel -> 3.10.0-862.3.2.el7

Reboot is required to ensure that your system benefits from these updates.

More information:
https://access.redhat.com/solutions/27943

マシンの再起動が必要と判断された場合は、上のように「Reboot is required to ensure that your system benefits from these updates.」と表示されます。

ちなみに、再起動が必要な場合は戻り値「1」、再起動が不要の場合は戻り値は「0」です。

再起動が必要なサービスを一覧表示

再起動が必要なサービスを一覧表示するには「-s」オプションを付けて実行します。

needs-restarting -s

chronyd.service
systemd-logind.service
NetworkManager.service
postfix.service
dbus.service
auditd.service
lvm2-lvmetad.service
sshd.service
tuned.service
polkit.service
systemd-journald.service
systemd-udevd.service
firewalld.service
irqbalance.service

まとめ

needs-restartingコマンドで上のように確認することはできますが、はやり確実なのは「パッケージを更新した時はOSを再起動する」です。

参考

アップデート後にシステムの再起動が必要なパッケージ

スポンサーリンク