Systemd kullanarak kontrol etmek istediğim eski bir daemon'um var. Yapılandırma dosyası değiştiğinde, öldürülmesi ve yeniden başlatılması gerekir. Başka bir deyişle, yapılandırma dosyasını systemctl reload MYSERVICE
düzenledikten sonra işlemi sonlandırmalı ve yeniden başlatmalısınız.
Deneme 1: Varsayılanları deneyin. Bu, sistemd'e arka plan programının nasıl başlatılacağını söyler, ancak nasıl yeniden yükleneceğini değil.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
Sonuç olarak start
ve restart
çalışmak, ancak reload
bu hatayı verir:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
Deneme 2: Süreci nasıl öldüreceğini söyle. Bu işlemi öldürür ancak systemd benim için yeniden başlatmaz.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
...bunu takiben...
# systemctl daemon-reload
# systemctl reload MYSERVICE
... işlemi öldürür ancak otomatik olarak yeniden başlatılmaz.
Deneme 3: İşlemi yeniden başlatmak için ExecReload kullanın. Bu birkaç nedenden dolayı başarısız olur:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
... aldığım hata mesajı ...:
# systemctl daemon-reload
# systemctl reload MYSERVICE
Job for MYSERVICE.service failed because the control process exited with error code. See "systemctl status MYSERVICE.service" and "journalctl -xe" for details.
Ben bir ReloadType = kill_and_restart ya da bir şey ama böyle bir şans olmasını beklenir.
Systemd'ye yeniden yükleme sırasında bir arka plan programını öldürmesini ve yeniden başlatmasını nasıl söyleyebilirim?