systemd는 서비스를 중지할 때 SIGTERM을 두 번 보냅니다.

systemd는 서비스를 중지할 때 SIGTERM을 두 번 보냅니다.

시스템 서비스에서 호출하는 C++ 프로그램이 있습니다. 프로그램은 즉시 호출되지 않지만 "&"로 구분된 다른 스크립트 내에 중첩됩니다.

서비스를 중지하면 프로그램이 SIGTERM을 매우 빠르게 두 번 수신합니다. 나는 SIGTERM을 한 번만 보내야 한다고 배웠습니다.

별도의 프로세스 그룹에서 서비스 없이 스크립트 체인을 시작하면 그룹을 종료할 때 프로그램은 예상대로 한 번만 신호를 받습니다. 이는 스크립트의 무언가가 여러 신호를 유발하는 상황을 배제해야 합니다.

기본 프로그램 대신 사용하는 bash 스크립트가 있는 경우 trap ... SIGTERM신호는 한 번만 수신됩니다. 이상한.

다중 신호의 원인은 무엇입니까?

관련 정보