Quando você inicia o serviço manualmente a partir da linha de comando (sem usar o nohup
comando prefix ou o &
sufixo para executá-lo em segundo plano), o que acontece?
a) Se o serviço iniciar e continuar em execução, e o prompt não retornar até que você pressione Control-C ou pare o serviço de alguma outra forma: Type = simple
é a escolha certa.
b) Se o prompt retornar, mas o serviço continuar rodando em segundo plano (ou seja, o serviço se monitora sozinho), então Type = forking
é a escolha certa.
c) Se o serviço fizer seu trabalho e retornar ao prompt sem deixar nada em execução (ou seja, o serviço apenas ajusta algumas configurações do kernel, envia um comando para outra coisa ou faz algo semelhante), então Type = oneshot
é provavelmente a escolha certa. Nesse caso, ExecStart
do serviço pode ser o comando para "definir" algo, e ExecStop
seria o comando correspondente para "desarmar". Este tipo geralmente beneficia de RemainAfterExit=true
Assim, o systemd irá acompanhar o "estado" deste serviço de acordo com o fato de a coisa ter sido "set" ou "unset" mais recentemente.
O outro Type
valores são casos especiais. Por exemplo, se o serviço utilizar uma conexão D-Bus, Type = dbus
pode ser a melhor escolha. Faz systemd
ciente do fato e, em seguida, o systemd rastreará esse serviço (e qualquer coisa que dependa dele) pela presença desse serviço no D-Bus.
apache
qual tipo deve ser usado?apachectl start
como raiz, talvez? Tente fazer isso e veja o que acontece. Então escolha a), b) ou c) da minha resposta. Eu aposto que o prompt retorna e o Apache continua rodando, então b) seria a resposta.