sd_notify 예제

Type=notify가 사용되었기 때문에 sd_notify(0,”WATCHDOG=1″)는 서비스 되지 않는 응용 프로그램에서 호출되어야 하며, 이 경우 정기적인 간격으로 호출해야 합니다(WatchdogSec=30s가 서비스 파일에 언급되기 전에) systemd가 다른 사람에게 알림을 받을 수 있도록 합니다. , 당신은 모든 세부 사항에 대한 systemd-notify의 남자 페이지를 읽을 수 있습니다, 거기에 복잡성이 많이 있지만 … 아마도 마지막에 있는 예제는 작동 방식을 설명하는 데 유용합니다. 다음은 서비스가 중단될 경우 자동으로 다시 시작하도록 서비스를 구성하는 방법의 예입니다. … startWatchdogMode 메서드에 제공 된 수 위에 우리가 핑 시스템 화 하려는 밀리 초의 양, 예제에서이 서비스 파일에 설정 된 3 초 보다 200 ms. 이벤트 루프로 인해 setInterval 가 정확히 2800ms를 발사할 것이라는 보장은 없으며, 프로세스가 바쁜 것처럼 좋은 부작용이 있지만 프로세스에서 호출되는 함수 수에 따라 변경됩니다. , systemd는 그것을 죽일 것입니다 (그리고 다시 시작 = 구성 세트로 다시 시작); 그리고 여러 프로세스가 Nginx(예:)와 여러 컴퓨터에서 부하 균형을 이루는 상황에서 는 어느 한 프로세스가 상당한 시간 동안 차단되지 않도록 합니다. sd_notifyf()는 sd_notify()와 유사하지만 printf()와 유사한 형식 문자열과 인수를 사용합니다. 이 코드를 C 또는 systemd 바인딩을 지원하는 다른 언어로 작성하는 경우 이 목적을 위해 sd_notify() 함수를 사용합니다.

C에 익숙한 경우 sd_notify(3) 맨 페이지를 살펴볼 수 있습니다. sd_pid_notify() 및 sd_pid_notifyf()는 sd_notify() 및 sd_notifyf()와 유사하지만 프로세스 ID(PID)를 사용하여 메시지의 시작 PID로 첫 번째 인수로 사용합니다. 이 기능은 적절한 권한을 사용할 수 있는 경우 다른 프로세스를 대신하여 알림 메시지를 보내는 데 유용합니다. PID 인수를 0으로 지정하면 호출 프로세스의 프로세스 ID가 사용되며, 이 경우 호출은 sd_notify() 및 sd_notifyf()와 완전히 동일합니다. sd_notify(0,”WATCHDOG=1″)는 프로세스가 잘 작동하고 있음을 시스템화하기 위한 API입니다. 문서에 따르면 sd_notify (“watchdog=1”)를 지정된 간격의 절반마다 호출해야합니다 (이 경우 15s입니다). 그러나 서비스에서 해당 함수를 호출하는 방법을 전혀 알지 못했습니다. 도움말은 매우 감사하게 될 것입니다. sd_watchdog_enabled의 맨페이지는 데몬이 WatchdogSec 시간의 절반마다 알림 메시지를 보내는 것이 좋습니다. 메시지 자체는 프로세스가 초기화될 때 준비됨=1내용과 함께 sd_notify를 사용하여 전송되고, 유지-살아 있는 알림에 대한 WATCHDOG=1을 사용하여 전송됩니다. /usr/local/bin/mytest.sh: 호출 .ready() 호출은 서비스 정의 파일에 알림 유형을 사용할 때 시스템이 시작되었음을 시스템화합니다. 실행 가능한 프로그램이 활성화된 것으로 간주되기 전에 systemd에 알림 메시지를 보낼 수 있습니다.

©2019 DemiJohn

Log in with your credentials

Forgot your details?