시스템 서비스에서 최대 서비스 기간을 지정하는 방법은 무엇입니까?

시스템 서비스에서 최대 서비스 기간을 지정하는 방법은 무엇입니까?

드물게 Type=simple시스템 서비스가 중단되거나 루프에 갇히는 문제가 발생했습니다. 이로 인해 타이머가 서비스 예약을 중지하게 됩니다. 서비스에서 확인된 대로 sudo systemctl status myservice서비스가 오래 전에 종료되어야 할 때 여전히 실행 중이기 때문입니다. 아직 오류를 파악하지 못했지만 중요하지 않습니다. 그러나 동시에 향후 실행 일정을 중단하는 것을 원하지 않습니다.

시스템 서비스 파일에서 강제 종료되는 최대 실행 시간을 지정하는 방법이 있습니까?

[Unit]
Description=scripts should run and exit but occasionally hangs or infinite loop      

[Service]
SyslogIdentifier=myservice
Environment='MYVAR=myvar'
User=deanresin
Type=simple
ExecStart=/usr/bin/python3 /home/deanresin/myscript

답변1

TimeoutStartSec사용되어야한다. 주석에서 @muru가 언급했듯이 종료해야 하는 스크립트를 실행하는 올바른 방법 Type=oneshotType=simple.

예를 들어 스크립트가 일반적으로 10초 안에 실행되는 경우 구성은 다음과 같습니다.

[Service]
Type=oneshot
TimeoutStartSec=10
SyslogIdentifier=myservice
Environment='MYVAR=myvar'
User=deanresin
ExecStart=/usr/bin/python3 /home/deanresin/myscript

스크립트 실행에 10초 이상 소요되면 스크립트가 종료되고 서비스가 실패한 것으로 표시됩니다.

관련 정보