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

관련 정보