まとめ
CentOS8でもyum-utils入れればCentOS7と同じようにneeds-restarting使えるけど、dnfに統合されたからyum-utils入れなくてもdnf needs-restarting
でいい。
CentOS7
CentOS7ではyum updateした後、OSが再起動が必要な状態かどうか調べるのに、yum-utilsに入っているneeds-restartingが使える。
[vagrant@centos7 ~]$ whereis needs-restarting
needs-restarting: /usr/bin/needs-restarting /usr/share/man/man1/needs-restarting.1.gz
[vagrant@centos7 ~]$ rpm -qf /usr/bin/needs-restarting
yum-utils-1.1.31-54.el7_8.noarch
OS再起動が不要ならその旨メッセージが出るし、コマンド戻り値は0
[vagrant@centos7 ~]$ needs-restarting -r
No core libraries or services have been updated.
Reboot is probably not necessary.
[vagrant@centos7 ~]$ echo $?
0
OS再起動が必要ならその旨メッセージが出るし、コマンド戻り値は1
[vagrant@centos7 ~]$ needs-restarting -r
Core libraries or services have been updated:
systemd -> 219-73.el7_8.6
kernel -> 3.10.0-1127.10.1.el7
Reboot is required to ensure that your system benefits from these updates.
More information:
https://access.redhat.com/solutions/27943
[vagrant@centos7 ~]$ echo $?
1
yum-cronで定期更新を設定し、rootで以下のcronを書いておけば、再起動が必要な更新をしたら月曜朝5時に再起動してくれる。
[vagrant@centos7 ~]$ sudo crontab -l
0 5 * * 1 /usr/bin/needs-restarting -r > /dev/null || /usr/sbin/shutdown -r 3
CentOS8
CentOS8でもyum-utilsパッケージが入っていれば、CentOS7と同じようにneeds-restartingコマンドが使える。
[vagrant@centos8 ~]$ whereis needs-restarting
needs-restarting: /usr/bin/needs-restarting /usr/share/man/man1/needs-restarting.1.gz
[vagrant@centos8 ~]$ rpm -qf /usr/bin/needs-restarting
yum-utils-4.0.8-3.el8.noarch
yum-utilsでインストールされる/usr/bin/以下のコマンド達は/usr/libexec/dnf-utilsへのシンボリックリンクでしかない。
[vagrant@centos8 ~]$ ls -l `rpm -ql yum-utils | grep /usr/bin/`
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/debuginfo-install -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/find-repos-of-install -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/needs-restarting -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/package-cleanup -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/repo-graph -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/repoclosure -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/repodiff -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/repomanage -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/repoquery -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/reposync -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/repotrack -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/yum-builddep -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/yum-config-manager -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/yum-debug-dump -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/yum-debug-restore -> /usr/libexec/dnf-utils
lrwxrwxrwx. 1 root root 22 11月 13 2019 /usr/bin/yumdownloader -> /usr/libexec/dnf-utils
man dnf-utils
によると、dnf needs-restarting
にマップされているだけ。
needs-restarting(1)
Check for running processes that should be restarted. Maps to dnf needs-restarting.
どちらを実行しても結果は同じなので、dnf needs-restarting
を覚える。
[vagrant@centos8 ~]$ needs-restarting -r
No core libraries or services have been updated since boot-up.
Reboot should not be necessary.
[vagrant@centos8 ~]$ dnf needs-restarting -r
No core libraries or services have been updated since boot-up.
Reboot should not be necessary.