systemd Usuário = configuração: como aplicar seletivamente?

0

Documentação do Systemd diz sobre o usuário =:

Esta configuração não afeta os comandos cuja linha de comando é prefixada com "+". Não consegui usar o prefixo "+". Qualquer coisa que prefixo com ele é simplesmente ignorado pelo sistema, portanto, no código abaixo, o pré-início não será executado.

[Service]
+ExecStartPre=/postgres.run.sh pre_start
ExecStart=/postgres.run.sh
ExecStop=/postgres.run.sh stop
+ExecStopPost=/postgres.run.sh post_stop
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=postgres
Type=forking
PIDFile=/run/pid.postgres
User=postgres
    
por n-alexander 22.09.2017 / 21:20

1 resposta

0

Você tem a sintaxe correta, mas a versão systemd incorreta. Você está lendo os documentos para a versão atual do sistema, mas executando uma versão mais antiga. A sintaxe +ExecXYZ foi introduzida em systemd versão 231.

A solução alternativa é que o seu "serviço" seja executado como raiz e, em seguida, os scripts que precisam ser executados como postgres incluem bash wrappers que primeiro su para o PostgreSQL.

Mas por que você está escrevendo seu próprio arquivo postgresql systemd em vez de usar um já escrito?

    
por Mark Stosberg 22.09.2017 / 21:58