Saya memiliki daemon old-school yang ingin saya kontrol menggunakan systemd. Ketika file konfigurasinya berubah, ia harus dimatikan dan dihidupkan ulang. Dengan kata lain, setelah mengedit file konfigurasi, systemctl reload MYSERVICE
harus mematikan proses dan me-restart itu.
Percobaan 1: Coba yang standar. Ini memberi tahu systemd bagaimana memulai daemon, tetapi tidak bagaimana memuatnya kembali.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
Akibatnya, start
dan restart
bekerja, tetapi reload
memberikan kesalahan ini:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
Percobaan 2: Katakan bagaimana cara mematikan proses itu. Ini membunuh proses tetapi systemd tidak me-restart untuk saya.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
...diikuti oleh...
# systemctl daemon-reload
# systemctl reload MYSERVICE
... membunuh proses tetapi tidak dimulai ulang secara otomatis.
Percobaan 3: Gunakan ExecReload untuk memulai kembali proses juga. Ini gagal karena beberapa alasan:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
... pesan kesalahan yang saya dapatkan ...:
# 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.
Saya berharap ada ReloadType = kill_and_restart atau sesuatu tapi tidak ada keberuntungan.
Bagaimana cara memberitahu systemd untuk membunuh dan memulai ulang daemon saat memuat ulang?