systemd está interrompido quando eu inicio ou reinicio um serviço

1

Sou novo no systemd depois de atualizar para o 16.04 e estou encontrando um problema com o início e o reinício dos serviços. Quando eu corro (por exemplo) ...

systemctl start djalbat.com

... parece funcionar, no entanto eu não recebo o aviso de volta, parece apenas para pendurar. Se eu ctrl-c para obter o prompt de volta e, em seguida, testar se o serviço foi iniciado, parece ter feito isso. Eu me pergunto o que há na configuração que faria com que isso acontecesse? Aqui está:

[Unit]
Description=djalbat.com


[Service]
Type=forking
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log


[Install]
WantedBy=multi-user.target

Além disso, se alguém puder apontar a necessidade da última diretiva WantedBy , isso será apreciado.

    
por James Smith 10.02.2018 / 14:40

1 resposta

3

Portanto, o comando executado com a configuração ExecStart não foi fork , enquanto o serviço systemd foi configurado para um executável de bifurcação. Esse lead systemctl para aguardar pelo for do executável, levando a uma linha de comando que não retorna.

A configuração correta para um executável que não é fork é usar Type=simple .

[Unit]
Description=djalbat.com

[Service]
Type=simple
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log

[Install]
WantedBy=multi-user.target

O WantedBy é necessário para conectar esta unidade a um destino, portanto, essa unidade ou serviço é iniciado automaticamente quando o destino apropriado é atingido e o serviço é ativado para iniciar automaticamente com

systemctl enable djalbat

Não se esqueça de atualizar systemd depois de fazer alterações nos seus arquivos de serviço com

systemctl daemon-reload
    
por Thomas 10.02.2018 / 16:51