某所の某 CentOS7 なサーバー、たまに何も考えずにログインしては yum update -y して、更にたまに reboot してるけどこれもはや cron で自動でよいのではと思ったのでそうする。
そういえば、アップデート内容によっては再起動が必要かを調べてくれるツールがあったなあぼんやり思い出した。 調べてみたら needs-restarting だった。そのままだ。
yum-utils に入っているらしいので、それでいれる。
$ sudo yum search needs-restarting
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
...
============================================================================================================= Matched: needs-restarting =============================================================================================================
dnf-plugins-core.noarch : Core Plugins for DNF
python2-dnf-plugins-core.noarch : Core Plugins for DNF
yum-utils.noarch : Utilities based around the yum package manager
$ sudo yum install yum-utils
...
$ needs-restarting --help
Usage:
needs-restarting: Report a list of process ids of programs that started
running before they or some component they use were updated.
Options:
-h, --help show this help message and exit
-u, --useronly show processes for my userid only
-r, --reboothint only report whether a full reboot is required (returns 1)
or not (returns 0)
-s, --services list the affected systemd services only
フルリブートが必要なのか、特定のサービスだけでいいのか、をオプションで切り替えられる模様。
こうしておいた。
$ cat /etc/cron.daily/yum
#!/bin/sh
yum update -y
$ cat /etc/cron.daily/needs-restarting-reboothint
#!/bin/sh
needs-restarting --reboothint
$ cat /etc/cron.daily/needs-restarting-services
#!/bin/sh
needs-restarting --services
確認した結果、全自動で再起動するようにしてもいいけど、何かが何かに引っかかって立ち上がらなくなったりして、まったく気付かないというのは少し怖いので、とりあえずは通知するだけにしておく。 cron はすでに通知…、というか MAILTO にかかれていて、本文に色々書かれていたので、このままで OK ということにしておく。