Saya ingin layanan systemd menangani forking (file saya tidak menangani forking dengan sendirinya. Jadi saya mengandalkan systemd untuk menangani itu)
File .service saya:
[Unit]
Description=swamp services management service
After=syslog.target
[Service]
Type=forking
ExecStart=/usr/bin/swamp
[Install]
WantedBy=multi-user.target
Pertanyaan
Apakah Type=forking
cukup menentukan untuk apa yang ingin saya capai? Atau mirip dengan mengharapkan forking di pemula yang benar-benar memberitahu pemula (jika saya mengerti dengan benar, tidak yakin saya lakukan, saya baru menulis skrip init) bahwa layanan saya akan menangani forking / daemonizing.
oneshot
(skrip berjalan pendek biasa) atausimple
(layanan berjalan lama yang tidak fork + keluar).&
?Jika Anda ingin systemd menangani forking, maka Anda harus menggunakan mis
Type=simple
atauType=notify
. Maka systemd akan melakukan forking untuk Anda.Jika Anda dapat memodifikasi
swamp
executable, maka ituType=notify
adalah solusi terbaik. Yang dapat dieksekusi kemudian harus memberitahu systemd ketika berhasil diinisialisasi. Ini berarti bahwasystemctl start swamp
akan menunggu rawa untuk menginisialisasi ketika dipanggil dari baris perintah, dan mencetak pesan kesalahan saat menginisialisasi ke baris perintah, yang biasanya Anda inginkan.Untuk contoh executable yang ditulis menggunakan Type = notify, lihat shellscript berikut:
sumber