2016-01-05 31 views
5

Başladığında veya yeniden başlatıldığında kabuk komut dosyasını çağırması gereken bir sistem hizmetini oluşturdum. Sistemd başlatıldıktan hemen sonra hizmet durduruluyor mu?

[Unit] 
Description=Starts the DCCA index software 

[Install] 
WantedBy=multi-user.target 

[Service] 
ExecStart=/opt/insiteone/bin/indexControl start 
ExecStop=/opt/insiteone/bin/indexControl stop 

# Execute pre and post scripts as root 
#PermissionsStartOnly=true 
Restart=on-abort 
TimeoutSec=600 

Başlangıçta kısa sürede başladığı gibi sonsuz döngüye yeniden başlatarak devam etti, ama TimeoutSec seçeneği eklendiğinde, bu kısa sürede hizmet başlayan ilk defa (başlandı olarak ExecStop denilen ve sonra hemen durdu).

Herhangi bir ipucu, nerede yanlış gidiyorum? P.S: indexControl, diğer işlemleri başlatan bir kabuk betiğidir.

+0

'chkconfig dizini kapalı 'da hiçbir yardım (index.service ssystemd hizmet dosyasıdır) – kingsmasher1

+0

Burada cevabı aldım: http://superuser.com/questions/1022142/why-is-systemd-stopping -servis-hemen-sonra-it-başlatıldı sorunu düzeltildi – kingsmasher1

cevap

3

deneyin değişen Restart=on-aborthttp://www.freedesktop.org/software/systemd/man/systemd.service.html itibaren

Restart=on-abnormal için:

olarak ayarlanması arıza-olduğu için tavsiye seçim uzun süren otomatik kurtarma çalışarak güvenilirliğini artırmak amacıyla, hizmetleri hatalar. üzerinde kendi tercihleri ​​(ve hemen yeniden başlatmanın önlenmesi)'dan feshedilebilecek hizmetler için, anormal alternatif bir seçimdir.

Ayrıca [Service] bölümüne Type=oneshot'u eklemek isteyebilirsiniz. https://wiki.archlinux.org/index.php/Systemd#Service_types itibaren

:

Tipi = oneshot: Bu daha sonra exit tek bir iş yapmak ve komut dosyaları için yararlıdır. RemainAfterExit = evet'i ayarlamak isteyebilirsiniz, böylece systemd hala işlem çıktıktan sonra hizmeti etkin olarak kabul eder.

Aşağıda benim tavsiye değişiklikleri yapıştırabilirsiniz: dikkate almak başka

[Unit] 
Description=Starts the DCCA index software 

[Install] 
WantedBy=multi-user.target 

[Service] 
Type=oneshot 
ExecStart=/opt/insiteone/bin/indexControl start 
ExecStop=/opt/insiteone/bin/indexControl stop 
Restart=on-abnormal 

şey bile komut bu hizmet dosya çağrıları sık sık başarısız mı ... Restart= hatta ihtiyacı olsun veya olmasın mı?

+5

Cevabınız için teşekkürler ama 'type = oneshot' çalışmıyor, ancak' type = forking' yapar. Cevabını buradan aldım, işe yarıyor. http://superuser.com/questions/1022142/why-is-systemd-stopping-service-immediately-after-it-is-started/ – kingsmasher1

+0

RemainAfterExit = evet ve Type = olanlar ile belki işe yarabilir – AkisC

+1

'Yeniden başlat ayarlanamıyor = açık -nornormal'de ** olanlarhot ** hizmetleri, sadece 'Yeniden Başlatma = Hayır' izinli: 'Servis yeniden başlatma = Hayır dışında bir ayar var, hangi Type = oneshot hizmetleri için izin verilmez. Refusing.' – s1moner3d

İlgili konular