예; 그러나 systemd를 다루기 전에 먼저 버그가 많은 프로그램을 수정하십시오.
MariusMatutiae는 매우 정확합니다. 프로그램에 문제가 있습니다. 교착 상태입니다. systemd를 사용하는 것이 답이 아닙니다. 기껏해야 산만하다. 손상되지 않도록 프로그램을 수정하십시오. 에너지를 올바른 일로 인도하십시오.
즉, 다른 사람들은 질문이 아닌 질문 제목 때문에 여기에 올 것입니다. 그들의 이익을 위해, 제목에 대한 대답은 다음과 같습니다.
예, systemd는 dæmon을 모니터링하고 대화가 중지되면 자동으로 다시 시작할 수 있습니다. 하지만 오래된 데몬 만이 아닙니다. mvp가 지적했듯이, 데몬이 중단되었음을 알 수있는 방법은 없습니다 (이 우주에서는 정지 문제를 결정할 수없는 경우). 시스템이나 다른 컴퓨터 프로그램은 그들에게 던져진 임의의 프로그램이 교착 상태에 빠졌거나 무한 루프에 빠졌다는 등을 처음부터 추론 할 수 없습니다. 여기에 도착하는 최선의 방법은 dæmon이 필요한 시간 범위 내에서 정기적 인 "하트 비트"작업을 수행하지 않았 음을 감지하는 것입니다.
따라서 systemd의 워치 독 기능을 이용하는 Dæmon은 시스템 별 프로토콜 인 sd_notify 프로토콜을 사용하도록 작성해야합니다. 이것은 dæmon 코드를 복잡하게 만듭니다. dæmons가 올바르게 작성되면 워치 독 기능을 사용하여 호출되었는지 확인해야하기 때문에 더 복잡합니다.
systemd의 워치 독 기능을 사용하기 위해이 프로토콜을 사용하는 Dæmon…
- …
WATCHDOG_USEC
환경 변수를 확인해야합니다 .
- … 약 / 2 간격 ( "USEC"는 마이크로 초를 나타냄)으로 옵션 세트 와 함께 수명주기 동안 sd_notify ()를 지속적으로 자주 호출해야합니다 .
WATCHDOG=1
WATCHDOG_USEC
- …
Type=notify
단위 파일에 설정되어 있어야 합니다.
- ...해야한다
NotifyAccess=main
(또는 =all
그 장치의 파일) 세트;
- … 단위 파일에
WatchdogSec=
초가 설정되어 있어야 합니다.
- …와 연결되어야합니다
libsystemd-daemon.so
코딩에 대한 자세한 내용을 알고 싶다면 설명서를 읽은 후 올바른 StackExchange로 이동하십시오. 수퍼 유저입니다. StackOverflow가 저기 있습니다.
추가 자료
- Lennart Poettering. 2011-04-12. 워치 독 . Freedesktop.org.
for(;;) do_something();
?