Eu quero que o serviço systemd lide com bifurcação (meu arquivo não lida com bifurcação por si só. Então, estou contando com o systemd para lidar com isso)
Meu arquivo .service:
[Unit]
Description=swamp services management service
After=syslog.target
[Service]
Type=forking
ExecStart=/usr/bin/swamp
[Install]
WantedBy=multi-user.target
Questão
Especificar o Type=forking
suficiente para o que estou tentando alcançar? Ou é semelhante a esperar bifurcação no iniciante, o que realmente diz ao iniciante (se eu entendi direito, não tenho certeza se entendi, sou novo em escrever initscripts) que meu serviço lidaria com bifurcação / daemonização.
oneshot
(um script típico de execução curta) ousimple
(um serviço de execução longa que não bifurca + sai).&
?Se você deseja que o systemd lide com bifurcação, use eg
Type=simple
ouType=notify
. Então o systemd fará o garfo para você.Se você pode modificar o
swamp
executável, entãoType=notify
é a melhor solução. O executável deve notificar o systemd quando for inicializado com êxito. Isso significa quesystemctl start swamp
aguardará a inicialização do pântano quando chamado da linha de comando e imprimirá qualquer mensagem de erro ao inicializar na linha de comando, que é o que você geralmente deseja.Para um exemplo de um executável gravado para usar Type = notify, consulte o seguinte shellscript:
fonte