Como implementar as ações customizadas do systemd em conformidade com a política no Debian?

5

O que quero dizer com ações personalizadas? Aqui estão alguns exemplos.

sudo service apache2 stop-htcacheclean   
sudo service apache2 graceful-stop
sudo service apache2 start-htcacheclean
sudo service apparmor recache

Como isso pode ser reimplementado ao portar scripts sysvinit para serviços systemd?

O problema com o systemd é que os argumentos diferenciados do daemon não podem ser condicionalmente usados?

E como fazer isso enquanto adere à política do Debian?

Ou você conhece algum exemplo de serviços Debian systemd que já suportam tais ações personalizadas / legadas?

    
por adrelanos 21.11.2014 / 19:10

1 resposta

4

O systemd não suporta ações personalizadas em unidades.

Para explicar "por que": uma unidade é (principalmente) algo que participa do gráfico de dependência. Adicionar ações personalizadas significa que deve haver uma maneira de adicionar dependências personalizadas. Isso desnecessariamente complica a sintaxe e a lógica.

Na verdade, você pode perceber isso como uma regra: "uma unidade - uma ação". Nada impede que você tenha várias unidades por aplicativo, nomeadas como $application-$action . Por exemplo:

  • apache2 graceful-stop provavelmente deve ser o modo padrão de parar o apache (para uma parada não-graciosa sempre há systemctl kill )
  • apache2 {start,stop}-htcacheclean deve traduzir diretamente para uma apache2-htcacheclean.service unit
  • apparmor recache pode ser ExecReload= em apparmor.service (ou uma apparmor-recache.service unit com Type=oneshot )
por 27.12.2014 / 23:51