systemctl을 사용하여 C로 작성된 데몬을 시작할 때 발생하는 문제

systemctl을 사용하여 C로 작성된 데몬을 시작할 때 발생하는 문제

systemdC 로 작성한 데몬을 등록하려고 합니다 . 나는 다음 스크립트를 사용합니다.

[Unit]
Description=App
After=network-target

[Service]
Type=simple
ExecStart=/usr/local/bin/daemon
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload,,,, 순서대로 다음 명령을 사용합니다 sudo systemctl enable. sudo systemctl start명령줄에서 프로그램을 실행하면 프로그램이 정상적으로 시작되지만 를 통해 실행하면 프로그램이 시작되지 않습니다 systemctl. 2개의 프로세스를 가진 데몬입니다 forks.

이것은 오류입니다.

Process: 11563 ExecStart=/usr/local/bin/daemon (code=exited, status=1/FAILURE)
 Main PID: 11563 (code=exited, status=1/FAILURE)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/uhp-service.service
           └─11361 /usr/local/bin/daemon

답변1

코드=종료됨, 상태=1/실패

프로그램이 상태 1로 종료됩니다. 이것이 무엇을 의미하는지, 오직 당신만이 알고 있습니다. 프로그램이 언제 코드 1을 반환합니까?

그건 너야하다메인 프로그램 종료반환 성공, 그렇지 않나요?

int main(...) {
    ...
    return EXIT_SUCCESS;
}

systemd그렇지 않으면 데몬을 시작하면 데몬이 분기되고 실패를 반환하며 systemd정리를 수행하여 분기된 스레드가 올바르게 실행 중이더라도 분기된 스레드를 종료하는 일이 발생할 수 있습니다 .

관련 정보