시간 초과 후 시스템 원샷 서비스 종료

시간 초과 후 시스템 원샷 서비스 종료

타임아웃 후 일회성 서비스를 종료할 수 있나요?

서비스가 타이머에 의해 주기적으로 트리거된다고 가정해 보겠습니다. 서비스를 완료하는 데 일반적으로 3초가 걸립니다. 그러나 귀하의 서비스에도 결함이 있으며 때로는 무한 루프로 실행됩니다. 복원 서비스는 귀하의 손이 닿지 않는 곳에 있습니다. 그래서 당신이 원하는 것은 시간 초과 후에 서비스를 종료하는 것입니다.

우리는 시뮬레이션할 수 있습니다SUV서비스는 다음과 같습니다:

[Unit]

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'while true; do echo x; sleep 1; done'

[Install]
WantedBy=default.target

매뉴얼 페이지를 읽으면 TimeoutStopSec유망해 보이는 옵션만 찾을 수 있습니다. 다음에 추가

TimeoutStopSec=10s

그러나 [Service]몇 분이 지나도 서비스는 전혀 종료되지 않습니다.

답변1

매뉴얼 페이지에는 다음과 systemd.service같이 나와 있습니다.

TimeoutStartSec= 시작을 기다리는 시간을 구성합니다. 데몬 서비스가 구성된 시간 내에 시작 완료 신호를 보내지 않으면 서비스가 실패한 것으로 간주되어 다시 종료됩니다. 단위 없는 초 단위 값 또는 "5min 20s"와 같은 시간 범위 값을 사용합니다. 시간 초과 논리를 비활성화하려면 "무한대"를 전달합니다. Type=oneshot을 사용하지 않는 한 관리자 구성 파일의 기본값은 DefaultTimeoutStartSec=입니다. 이 경우 시간 제한은 기본적으로 비활성화됩니다(systemd-system.conf(5) 참조).

마지막 문장 때문에 혼란스럽습니다. 그렇다고 다시 활성화할 수 없다는 뜻은 아닙니다 TimeoutStartSec. 해결책은 간단합니다. 추가하면 됩니다.TimeoutStartSec=10s

관련 정보