Ubuntu のパッケージアップデート実行で、システムの再起動が必要かチェックする方法

Ubuntu のパッケージアップデート実行で、システムの再起動が必要か確認するコマンドについてです。

システム再起動の要否は、/var/run/reboot-required で確認します。
サービス再起動/プロセス再起動が必要な場合は、checkrestart コマンドで確認できます。


/var/run/reboot-required


/var/run/reboot-required の存在を確認します。
存在していれば、システムの再起動が必要です。
また、その時のファイルの中身は次のようになっています。


*** システムの再起動が必要です ***


なお、/var/run/reboot-required の利用には update-notifier-commonパッケージが必要です。
Ubuntuデフォルトで入っていますが、無い場合は次のコマンドでインストールします。


apt install update-notifier-common



checkrestart コマンド


checkrestart で再起動が必要なサービスやプロセスがわかります。
ただし、システム再起動の要否はわかりません。

checkrestart は下記コマンドでインストールします。


apt install debian-goodies


checkrestart 実行時に、次の表示が出ますが、無視してかまいません。
/run/user/ 下のディレクトリにアクセスできない旨の警告ですが、パッケージアップデートで更新されるようなファイルが配置されることは無いので、プロセス再起動等の有無の判定に影響ありません。


lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/125/gvfs
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.



checkrestart -t


再起動対象プロセスの有無によって、コマンド実行の戻り値が異なります。

再起動対象プロセスがある場合は、次のような表示が出ます。
また、コマンドの戻り値は 1 です。


94 processes using old versions of upgraded files


無い場合は、コマンドの戻り値は 0 です。
次のような表示が出ます。


Found 0 processes using old versions of upgraded files



checkrestart(オプション無し)


再起動対象サービス/プロセスの有無に関わらず、コマンド実行の戻り値は 0 です。

再起動対象サービス/プロセスが無い場合の表示です。

Found 0 processes using old versions of upgraded files


再起動対象サービス/プロセスがある場合、出力結果の先頭に次のように表示されます。


Found 95 processes using old versions of upgraded files
(71 distinct programs)
(37 distinct packages)


対象プロセスが systemdサービスや、initdスクリプト で再起動できる場合は、続けて、次のように再起動方法が出力されます。

These are the systemd services:
systemctl restart networkd-dispatcher.service
systemctl restart polkit.service
systemctl restart sudo.service

These are the initd scripts:
service irqbalance restart
service cron restart
service unattended-upgrades restart
service atd restart
service ssh restart


プロセス再起動用の systemdサービス/initdスクリプトが無いプロセスは、次のように表示されます。

These processes (2) do not seem to have an associated init script to restart them:
gnome-shell:
        3926    /usr/bin/gnome-shell
xwayland:
        4118    /usr/bin/Xwayland



checkrestart -m


再起動対象プロセスの有無に関わらず、コマンド実行の戻り値は 0 です。
checkrestart(オプション無し)の出力結果と同等のものが、マシン処理しやすい形式で出ます。

再起動対象プロセスが無い場合は、次のような表示が出ます。

PROCESSES: 0


再起動対象プロセスがある場合は、次のような表示が出ます。
先頭が SERVICE の行は、再起動用の systemdサービス があります。
INIT の場合は、initdスクリプトがあります。
OTHER は、プロセス再起動用の systemdサービス/initdスクリプトが無いプロセスです。

PROCESSES: 94
PROGRAMS: 70
PACKAGES: 36
SERVICE:acpid,480,/usr/sbin/acpid
SERVICE:avahi-daemon,486,/usr/sbin/avahi-daemon
SERVICE:avahi-daemon,536,/usr/sbin/avahi-daemon
SERVICE:cron,488,/usr/sbin/cron
    (省略)
OTHER:tracker-miner-fs,682,/usr/libexec/tracker-miner-fs
OTHER:tracker-miner-fs,1245,/usr/libexec/tracker-miner-fs
OTHER:gnome-session-bin,687,/usr/libexec/gnome-session-binary
    (省略)



needrestart


その他、needrestartコマンドもありますが、checkrestart とほぼ同等の機能で、再起動対象プロセスの有無を戻り値で判定できないので、checkrestart の方をお勧めします。


参考


Ubuntuはmotdの「システムの再起動が必要です」フラグをどのように追跡しますか?
Linuxでパッケージアップデート後に再起動が必要なプロセスを確認する方法 – すこぶる.net
lsof や find コマンドで fuse.gvfsd-fuse の警告が出る問題について調べてみた | レンタルサーバー・自宅サーバー設定・構築のヒント
後悔あとを絶たず: 5月 2019 Raspbian Stretch (Debian Stretch) でapt-get upgrade後に再起動が必要かどうか調べるには

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント