おつかれさまです。Dです。
サーバーの運用をしているとセキュリティ担保のためにも、適宜dnf updateでOSやミドルウェアをアップデートするかと思います。なんとなくカーネルのアップデートがあった場合はOS再起動したほうがいいみたいなことを漠然と思っていたんですが、再起動が必要なサービスを示してくれるコマンドをふいに知ったので共有したいと思います。
まずはサーバー環境
サーバー環境はAlmaLinux9です。
yum-utils パッケージが必要
再起動が必要なサービスを確認するコマンドを利用するには「yum-utils」というパッケージをインストールする必要があります。
以下のコマンドでパッケージがインストールされているか確認出来ます。今回は入っているのでそのまま使えますね。もし入っていない場合は「dnf install yum-utils」でインストール可能です。
# rpm -qa | grep yum-utils
yum-utils-4.3.0-13.el9.noarch
needs-restartingコマンドにて確認
「needs-restarting」コマンドで再起動が必要なプロセスを確認することが出来ます。
実行結果は以下になりますが、結構いろいろありますね。。
# needs-restarting
869 : /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
926 : /usr/sbin/NetworkManager --no-daemon
957 : php-fpm: master process (/etc/php-fpm.conf)
962 : /usr/sbin/gssproxy -D
970 : /usr/bin/python3 -Es /usr/sbin/tuned -l -P
1015 : /sbin/agetty -o -p -- \u --noclear - linux
1089 : php-fpm: pool hoge
1090 : php-fpm: pool hoge
1091 : php-fpm: pool hoge
1092 : php-fpm: pool hoge
1102 : php-fpm: pool hoge
1103 : php-fpm: pool hoge2
1104 : php-fpm: pool hoge2
1112 : php-fpm: pool hoge2
1113 : php-fpm: pool hoge2
1114 : php-fpm: pool hoge2
2937 : /usr/lib/polkit-1/polkitd --no-debug
74522 : /usr/bin/postmaster -D /var/lib/pgsql/data
74595 : postgres: logger
74669 : postgres: checkpointer
74670 : postgres: background writer
74671 : postgres: walwriter
74672 : postgres: autovacuum launcher
74673 : postgres: stats collector
74674 : postgres: logical replication launcher
「-s」のオプションを付けると、サービスで確認することが出来ます。
# needs-restarting -s
getty@tty1.service
polkit.service
firewalld.service
tuned.service
NetworkManager.service
postgresql.service
php-fpm.service
gssproxy.service
php-fpmがあるので試しに再起動してみて、再度確認してみましょう。php-fpmの項目が消えましたね。
# systemctl restart php-fpm.service
# needs-restarting -s
getty@tty1.service
postgresql.service
gssproxy.service
tuned.service
firewalld.service
NetworkManager.service
polkit.service
「-r」をつけるとサーバーOSの再起動が必要かどうか確認することが出来ます。
# needs-restarting -r
Core libraries or services have been updated since boot-up:
* glibc
* kernel
Reboot is required to fully utilize these updates.
More information: https://access.redhat.com/solutions/27943
こちらもOS再起動後どうなるか確認してみましょう。kernelやglibcの項目が消えましたね。これで一安心。
# reboot
# needs-restarting -r
No core libraries or services have been updated since boot-up.
Reboot should not be necessary.
まとめ
windowsPCだと再起動を促すポップアップが出るので、再起動しなきゃって思うんですがLinuxサーバーは自分で確認しにいかないと状況が分からないですね。
OSごと再起動してしまうのが楽ですが、OSを再起動してはならない場面でサービスのアップデートを適用したい場合にはどのサービスを再起動すれば良いか確認出来るので便利だなと思いました。