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.
FailureAction
ile aynı değerleri alır StartLimitAction
ve her none
şey bir tür kapanmayı tetikler.
Restart
ve şu şekilde sarmaktırmy_cmd
:ExecStart=/bin/sh -c 'while ! my_cmd; do sleep 1; done'
makul birTimeoutStartSec
değerle birlikte .