systemd ExecStartPost não parece ser chamado

5

Eu usei a seguinte configuração para iniciar o beanstalkd process

[Service]
ExecStart=/usr/local/bin/beanstalkd 
ExecStartPost=pgrep beanstalkd > /var/run/beanstalkd.pid

A última linha deve gerar um pidfile após o processo ser iniciado, mas o arquivo não é criado. por quê?

Ou há outra maneira de forçar a criação de pidfile em systemd ?

    
por jney 03.03.2013 / 00:33

3 respostas

9

O systemd não requer um pidfile para um serviço Type = simple. Ele irá gerenciar o daemon em primeiro plano. systemctl status SERVICE_NAME mostrará o pid do processo principal (e de qualquer outro processo no cgroup).

Para completar, sua linha ExecStartPost não funcionou porque o systemd não usa um shell para executar comandos e não executa a pesquisa $ PATH, então você teria que usar ExecStartPost=/bin/sh -c "..." , mas como eu disse, a linha é desnecessária.

    
por 03.03.2013 / 06:06
2

Caso você ainda precise de uma resposta sobre isso (ou alguém o faça), você precisa de um contexto de shell para executar o pgrep, então o comando correto seria

ExecStartPost=/usr/bin/zsh -c 'pgrep process_name > /var/run/process_name.pid'
    
por 12.11.2013 / 13:30
1

Isso mostra que a ordem dos executivos é de BOTTOM para TOP link Seu ExecStartPost está sendo executado antes do ExecStart

    
por 04.06.2013 / 14:21

Tags