Birkaç kez systemd servis manüel okudum, ama hala temel bir systemd desen anlayamıyorum:
Başlangıçta başarıyla tamamlanana kadar bir başlatma işlemini bir kez (docker kapsayıcısı veya bir sürücüyü biçimlendirmek gibi) çalıştırmak istiyorum. Ama bunun için Type = oneshot kullanırsam, Restart = on-fail kullanamazsınız ve başarısız olursa, işi yeniden denemez. Burada bariz bir şeyi mi kaçırıyorum?
Ayrıca Restart = on-fail ile Type = basit ayarını denedim, ancak bu birçok durumda oneshot hizmetlerinin verdiği aşağıdaki davranışa (manpage) gerekir:
Olanların davranışı basit olana benzer; ancak, systemd takip birimlerine başlamadan önce işlemin çıkması beklenir.
Güncellemeler:
Restart=ayarlayarak FailureAction=[self.unit](birimin adı ile [self.unit] değiştirin). Bu bir tür hileli, ama en azından açık ve takip edilebilecek kadar kolay.
FailureActionile aynı değerleri alır StartLimitActionve her noneşey bir tür kapanmayı tetikler.
Restartve şu şekilde sarmaktırmy_cmd:ExecStart=/bin/sh -c 'while ! my_cmd; do sleep 1; done'makul birTimeoutStartSecdeğerle birlikte .