우리는 시스템 시작 시 실행 파일을 시작하는 systemd용 서비스 스크립트를 작성했습니다. 서비스 스크립트는 일관성을 유지하기 위해 90초마다 다시 시작됩니다. 서비스를 비활성화하고 실행 파일을 실행하면 예상대로 실행됩니다. 우리는 Intel Edison에서 Yocto Linux를 사용합니다.
시작 스크립트는 다음과 같습니다.
[Unit]
Description=patsuit
After=network-online.target
Wants=network-online.target
[Service]
WorkingDirectory=/home/root
Type=forking
ExecStart=/bin/PatDownSuitFirmware/PatDown_V3
User=root
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
답변1
준비 프로토콜이 일치하지 않습니다. 귀하의 프로그램이 하위 프로세스를 포크한 다음 상위 프로세스가 준비되었음을 나타내기 위해 종료한다고 systemd에 지시했습니다. 그러나 실제로 귀하의 프로그램은 그렇게 하지 않습니다. 90초(기본 시작 시간 초과) 이내에 준비가 선언되지 않았기 때문에 systemd는 서비스가 실패했다고 판단합니다. 서비스가 실패하면 모든 것이 지워질 수 있습니다. 이후 on-failure
실패한 서비스가 다시 시작되고 주기가 반복됩니다.
프로그램의 실제 기능을 올바르게 설명하는 준비 프로토콜을 사용하십시오. 그건 아직 우리에게 말하지 않았어요.