![RedHat: 재부팅하지 않고 systemd 및 dbus를 업데이트하는 방법은 무엇입니까?](https://linux55.com/image/218591/RedHat%3A%20%EC%9E%AC%EB%B6%80%ED%8C%85%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20systemd%20%EB%B0%8F%20dbus%EB%A5%BC%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
이 질문은 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-reexec
systemd를 다시 시작하라는 명령입니다. 그러나 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