RedHat:再起動せずにsystemdとdbusを更新する方法は?

RedHat:再起動せずにsystemdとdbusを更新する方法は?

この質問はRedHat 7/8/9についてです。

ほとんどのアップデートを適用した後、影響を受けるサービスを再起動すれば十分です。

RedHatは、再起動する必要がある項目を正確に識別するための追跡ツールを提供します。次のような出力が生成されます。

You should restart:
  * Some applications using:
      systemctl restart chronyd
      systemctl restart firewalld
      systemctl restart mariadb
      systemctl restart polkit
      systemctl restart postfix
      systemctl restart rngd
      systemctl restart rsyslog
      systemctl restart sshd
      systemctl restart sssd
      systemctl restart systemd-journald
      systemctl restart systemd-logind
      systemctl restart systemd-udevd
      systemctl restart tuned
      systemctl restart vmtoolsd

  * These applications rebooting your computer:
      dbus
      kernel
      systemd

私が理解したところ、カーネルアップデート(kspliceを除く)にのみ再起動が必要です。

再起動せずにsystemdとdbusを再起動する方法は?

私はすでに試しました。

systemctlデーモンが再実行されました。

PID-1 プロセスを再起動します。

ただし、追跡プログラムの後でも、-aはまだsystemdに「コンピュータを再起動する必要があります」と報告します。

dbusの場合、どこから探すべきかわかりません。

答え1

systemctl daemon-reexecsystemd を再起動するコマンドです。しかし、PID 1がsystemdの唯一のインスタンスではないことに注意してください。対話型ログインセッションを持つ各ユーザーには、再起動に使用できる独自のユーザー固有のインスタンスもありますsystemctl --user daemon-reexec。 (これらのインスタンスはuser@*.service関連用語:「linger」で管理されています。)

もちろん技術的にdbus-daemonはsystemdによって管理されるユーザースペースサービスであるため、再起動なしで再起動できますdbus.service。ただし、実際にはIPCバスへの接続が失われ、他の多くのサービスが予期せず終了する可能性があるため、実際にはお勧めできません。

追加のライブラリやモジュールを動的にロードしないため、古いバージョンのdbus-daemonを実行し続けることは通常安全です(必要なものはすべて起動時にld.soによってロードされます)。これに対してhttpdはするモジュールは動的にロードされるため、このような場合に競合が発生します。

答え2

これは一般的に@user1686の素晴らしい答えを詳しく説明するコメントです。 URLから関連コメントをコピーできるように完全な回答を作成しています。

@user1686の回答を見た後、私は次も発見しました。https://access.redhat.com/solutions/27943

これは、再起動が必要なパッケージの完全なリストです(変更される可能性があります)。このリストはRHEL 5/6/7用ですが、RHEL 8および9でも同様です。

kernel
kernel-PAE
kernel-rt
kernel-smp
kernel-xen
linux-firmware
*-firmware-*
dbus
glibc
hal
systemd
udev
gnutls
openssl-libs

返品:

これは、そのパッケージを更新した直後にシステムを再起動する必要があるという意味ではありません。

通常、非セキュアなglibcエラータを適用した後、サービスを再起動するだけで十分です。

この資料では、「更新されたコンテンツに依存するすべてのサービスを再起動する必要があります」の詳細について説明します。もちろん、これはほぼすべてのサービスです。

したがって、カーネルが更新されない場合は再起動を回避できますが、ほとんどすべてのサービスを再起動する必要があります。

RHEL 7.7以降、8.1以降、およびRHEL 9でkpatchを使用して、再起動せずにカーネル自体を更新することもできます。

詳細はこちら:https://www.redhat.com/sysadmin/kernel-live-patching-linux

RHEL 7、RHEL 8、RHEL 9の指示は異なります。 RHEL 8および9の場合:

dnf install kpatch kpatch-dnf
dnf kpatch auto

関連情報