ford systemd vs simples?

12

Eu estou escrevendo meu primeiro systemd arquivo unitário.

Para TypeExistem algumas opções: forking, simple, eu li o Documentação Redhat sobre este tópico (Tabela 9.9), mas ainda não tenho certeza quando devo usar qual opção.

Alguma diretriz?

leeyuiwah
fonte

Respostas:

20

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=trueAssim, 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.

telcoM
fonte
Suponha que eu comece apachequal tipo deve ser usado?
kittygirl
1
Bem, como você iniciaria manualmente? Correndo 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.
telcoM