재부팅하지 않고 systemd를 다시 시작할 수 있나요?

재부팅하지 않고 systemd를 다시 시작할 수 있나요?

yum updateRHEL 7.4에서 서비스를 다시 시작 하려고 합니다 . systemctl을 사용하여 각 서비스를 다시 시작할 수 있지만 systemd 자체도 다시 시작해야 한다는 메시지 needs-restarting가 표시됩니다.yum utils

# needs-restarting
1 : /usr/lib/systemd/systemd --system --deserialize 21

systemd서버를 다시 시작하지 않고 다시 시작할 수 있나요 ? 어떻게?

몇 가지 언급을 찾았 systemctl daemon-reload지만 재부팅해야 할 필요성 목록에서 벗어나지는 않았습니다.

답변1

데몬을 다시 시작하려면 다음을 실행하세요.

systemctl daemon-reexec

이 내용은 다음과 같이 기록됩니다.systemctl맨페이지:

시스템 관리자를 다시 실행하십시오. 그러면 관리자 상태가 직렬화되고 프로세스가 다시 실행되며 상태가 다시 역직렬화됩니다. 이 명령은 디버깅 및 패키지 업그레이드를 제외하고는 거의 사용되지 않습니다. 때로는 헤비급 선수가 되는 것이 도움이 될 수 있습니다 daemon-reload. 데몬이 다시 실행되면 사용자를 대신하여 수신하도록 구성된 모든 시스템 소켓에 계속 액세스할 수 있습니다.

불행히도 실제로 다시 시작 needs-restarting되는지 알 수 있는 방법이 없습니다 systemd. systemd execs자체적으로 다시 시작됩니다. 이는 프로세스의 시작 시간을 재설정하지 않지만 needs-restarting실행 파일의 수정 시간을 프로세스의 시작 시간과 비교하여 무엇보다도 프로세스를 다시 시작해야 하는지 결정하므로 항상 systemd다시 시작이 필요한 것으로 간주합니다. 다시 시작해야 하는지 확인하려면 다음 을 systemd확인하세요 lsof -p1 | grep deleted. 삭제된 버전의 . 삭제된 파일이 없다고 표시 되면 재부팅할 필요가 없습니다. (감사해요systemdlibsystemd-sharedsystemdlsofsystemd제프 샬러팁을 위해! )

답변2

제 경우에는 방금 업그레이드했는데 systemd모든 systemctl명령이 실패했습니다.

# systemctl daemon-reexec
Failed to reload daemon: Access denied
# systemctl status
Failed to read server status: Access denied

그러나 맨페이지에 따르면 initPID 1로 실행되는 데몬에 전송하여 동일한 작업을 수행할 수 있습니다. 이는 작동합니다.SIGTERM

kill -TERM 1

이렇게 하면 데몬이 다시 로드되고 그 후에는 모든 systemctl명령이 다시 작동하기 시작합니다.

관련 정보