"OneShot" 시스템 서비스에는 기본적으로 시작/종료와 관련이 없는 시간 초과가 있습니까?
이 경우 배포에서 사용되는 현재 기본값을 어떻게 확인할 수 있습니까?
답변1
아니요. 기본적으로 type=oneshot
서비스는 인정되지 않습니다 TimeoutStartSec
.
~에서시스템 서비스(5)
시간 초과 시작 초 =
시작을 기다리는 시간을 구성합니다. 데몬 서비스가 구성된 시간 내에 시작 완료 신호를 보내지 않으면 서비스가 실패한 것으로 간주되어 다시 종료됩니다. 단위 없는 초 단위 값 또는 "5min 20s"와 같은 시간 범위 값을 사용합니다. 시간 초과 논리를 비활성화하려면 "무한대"를 전달합니다. 관리자 구성 파일에서 기본값은 DefaultTimeoutStartSec=입니다.이 경우 Type=oneshot을 사용하지 않는 한 시간 초과는 기본적으로 비활성화됩니다.(systemd-system.conf(5) 참조)
그 이유는...
oneshot은 단순하게 동작하지만 systemd가 후속 유닛을 시작하기 전에 프로세스가 종료되어야 합니다. RemainAfterExit=은 이러한 서비스에 특히 유용합니다. Type= 및 ExecStart=가 지정되지 않은 경우 이는 암시적 기본값입니다.
...이는 oneshote 명령을 실행하고 프로세스가 종료될 때(if) RemainAfterExit
true인 경우 서비스가 활성으로 표시됨을 의미합니다. 어떤 이유로 프로세스가 종료되지 않으면 이는 문제가 될 수 있으며 TimeoutStartSec
기본적으로 따르는 다른 유형을 사용하게 될 수 있습니다. 예를 들어 서비스를 type=simple
명시적으로 설정할 수 있습니다 .TimeoutStartSec
type=oneshot