"systemctl daemon-reload"는 무엇을 합니까?

"systemctl daemon-reload"는 무엇을 합니까?

내 서비스 중 하나가 갑자기 중단되었습니다. 서비스를 다시 시작해 보았지만 실패하고 다음을 실행하라는 메시지가 표시되었습니다 systemctl daemon-reload.

정확히 어떤 역할을 하나요? 무엇인가요 daemon-reload?

답변1

man systemctl이 말했습니다:

데몬 다시 로드

systemd 관리자 구성을 다시 로드합니다. 그러면 모든 생성기가 다시 실행되고(systemd.generator(7) 참조) 모든 유닛 파일이 다시 로드되며 전체 종속성 트리가 다시 생성됩니다. 데몬이 다시 로드되면 사용자를 대신하여 수신하도록 systemd가 구성된 모든 소켓에 계속 액세스할 수 있습니다.

이 명령을 reload 명령과 혼동해서는 안 됩니다.

따라서 본질적으로 이것은 "소프트" 재로드입니다.파일 시스템에서 변경된 구성을 가져오고 종속성 트리를 재생성합니다..

따라서 다음과 같이 systemd.generator명시됩니다.

생성기는 /usr/lib/systemd/user-generators/ 및 위에 나열된 다른 디렉터리에 있는 작은 바이너리입니다. systemd(1)은 시작 시 및 구성 다시 로드 시, 즉 유닛 파일이 로드되기 전 아주 일찍 이러한 바이너리를 실행합니다. 생성기는 유닛 파일을 동적으로 생성하거나 유닛 파일에 대한 기호 링크를 생성하여 추가 종속성을 추가하고 기존 정의를 확장하거나 재정의할 수 있습니다. 주요 목적은 구성 파일을 기본이 아닌 단위 파일에서 기본 단위 파일로 동적으로 변환하는 것입니다.

생성기는 위에 나열된 컴파일 중에 결정된 경로 집합에서 로드됩니다. 시스템 생성기와 사용자 생성기는 이름이 각각 system-generators/ 및 user-generators/로 끝나는 디렉터리에서 로드됩니다. 이전에 나열된 디렉터리에 있는 생성기는 목록의 아래쪽 디렉터리에 있는 동일한 이름의 생성기를 덮어씁니다. /dev/null에 대한 기호 링크 또는 빈 파일을 사용하여 생성기를 차단하여 실행을 방지할 수 있습니다. 우선 순위가 가장 높은 두 디렉터리의 순서는 장치 로드 경로를 기준으로 역전되며 /run의 생성기는 /etc의 생성기를 재정의합니다.

새 생성기를 설치하거나 구성을 업데이트한 후 systemctl daemon-reload를 실행할 수 있습니다. 이렇게 하면 생성기에 의해 생성된 이전 구성이 삭제되고 모든 생성기가 다시 실행되며 systemd가 디스크에서 장치를 다시 로드하게 됩니다. 자세한 내용은 systemctl(1)을 참조하세요.

답변2

변경 /lib/systemd/system/<servicename>.service하고 다시 시작하면

systemctl restart <servicename>.service

그렇지 않으면 systemctl daemon-reload변경 사항 없이 이전 캐시 설정을 다시 시작합니다.

이로 인해 우리는 여러 번 화상을 입었습니다. 사람들은 서비스를 다시 시작하기만 하면 변경 사항이 다시 로드되지 않는다는 사실을 잊어버립니다.

또는 전체 시스템을 재부팅할 수 있으며 새로 재부팅된 시스템도 서비스에 대한 새 구성을 읽습니다.

답변3

로그오프할 때나 재부팅할 때 간단한 테스트를 위해 /etc/fstab을 사용하겠습니다. 이전에 저장된 값의 타임스탬프를 확인하기만 하면 됩니다. 이전에 계산된 sha1 합계를 기억할 수도 있습니다.

위에서 언급한 스크립트를 포함하면 데몬 다시 로드 실행을 잊어버리는 것을 방지하는 데 도움이 됩니다.

관련 정보