systemd
C 로 작성한 데몬을 등록하려고 합니다 . 나는 다음 스크립트를 사용합니다.
[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
정리를 수행하여 분기된 스레드가 올바르게 실행 중이더라도 분기된 스레드를 종료하는 일이 발생할 수 있습니다 .