재부팅하지 않고 systemd를 다시 시작할 수 있습니까? systemd 재시작해야한다고 하더군요 : # needs-restarting 1

yum updateRHEL 7.4에서 서비스를 다시 시작하려고합니다 . 나는 systemctl를 사용하여 모든 서비스를 다시 시작 할 수 있지만 needs-restarting에서이 yum utils나는 또한 자신을 systemd 재시작해야한다고 하더군요 :

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

systemd서버를 재부팅하지 않고 다시 시작할 수 있습니까 ?

에 대한 몇 가지 언급을 찾았 systemctl daemon-reload지만 이것이 다시 시작 요구 목록에서 사라지지는 않습니다.



답변

데몬을 다시 시작하려면

systemctl daemon-reexec

이것은에 설명되어 있습니다 :systemctl

시스템 관리자를 다시 실행하십시오. 관리자 상태를 직렬화하고 프로세스를 다시 실행하고 상태를 다시 직렬화 해제합니다. 이 명령은 디버깅 및 패키지 업그레이드를 제외하고는 거의 사용되지 않습니다. 때로는 헤비급으로 도움이 될 수 있습니다 daemon-reload. 데몬을 다시 실행하는 동안 사용자 구성을 대신하여 시스템 수신 대기하는 모든 소켓에 액세스 할 수 있습니다.

불행히도 실제로 다시 시작 needs-restarting되었는지 확인할 수 없습니다 systemd. systemd execs프로세스 자체의 시작 시간을 재설정하지 않는 자체 재시작. 그러나 needs-restarting실행 파일의 수정 시간을 프로세스의 시작 시간과 비교하여 프로세스를 다시 시작해야하는지 여부를 결정하고 결과적으로 항상 systemd다시 시작해야하는지 고려 합니다. systemd실제로 다시 시작 해야하는지 여부를 결정하려면 , 의 출력을 확인할 수 있습니다 lsof -p1 | grep deleted: systemd라이브러리 사용 libsystemd-shared, 동일한 패키지로 제공되며 데몬과 함께 업그레이드되므로 systemd다시 시작해야 할 경우 삭제 된 버전의 라이브러리를 사용하여 볼 수 있습니다. lsof삭제 된 파일 이 표시 systemd되지 않으면 다시 시작할 필요가 없습니다. (감사합니다힌트를위한 Jeff Schaller !)


답변

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

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

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

kill -TERM 1

데몬을 다시로드 한 후 모든 systemctl명령이 다시 작동하기 시작했습니다.