systemd 서비스 맨 페이지를 몇 번 읽었지만 여전히 기본적인 시스템 패턴을 알 수는 없습니다.
부팅시 시작 프로세스를 한 번 (도커 컨테이너 또는 드라이브 포맷과 같은) 실행하여 성공적으로 완료하고 싶습니다. 그러나 Type = oneshot을 사용하면 Restart = on-failure를 사용할 수 없으며 실패하면 작업을 다시 시도하지 않습니다. 여기에 명백한 것이 빠져 있습니까?
또한 Restart = on-failure로 Type = simple 설정을 시도했지만 많은 경우 oneshot 서비스가 제공하는 다음 동작 (맨 페이지에서)이 필요합니다.
oneshot의 동작은 단순과 유사합니다. 그러나 systemd가 후속 장치를 시작하기 전에 프로세스를 종료해야합니다.
업데이트 :
FailureAction = 을 보셨습니까 ?
—
Centimane
Restart=
설정 FailureAction=[self.unit]
([self.unit]을 장치 이름으로 대체) 과 동일한 것을 달성 할 수 있습니다 . 그것은 해 키지 만 적어도 명시적이고 쉽게 따라 할 수 있습니다.
@Centimane은와
—
jpkotta 2011
FailureAction
같은 값을 StartLimitAction
가지며 모든 것을 제외하고 none
는 일종의 종료를 트리거합니다.
Restart
하고 래핑하는my_cmd
것 입니다.ExecStart=/bin/sh -c 'while ! my_cmd; do sleep 1; done'
TimeoutStartSec