systemd está travando quando inicio ou reinicio um serviço

systemd está travando quando inicio ou reinicio um serviço

Sou novo no systemd depois de atualizar para 16.04 e estou tendo problemas ao iniciar e reiniciar serviços. Quando corro (por exemplo)...

systemctl start djalbat.com

... parece funcionar, mas não recebo o prompt de volta, apenas parece travar. Se eu ctrl-creceber o prompt de volta e testar se o serviço foi iniciado, parece que sim. 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 pudesse apontar a necessidade da última WantedBydirectiva, agradeceríamos.

Responder1

Acontece que o comando que é executado com a ExecStartconfiguração nãogarfoenquanto o systemdserviço foi configurado para um executável bifurcado. Isso leva systemctla aguardar o for do executável, levando a uma linha de comando que não retorna.

A configuração correta para um executável que nãogarfoé 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 alvo, para que esta unidade ou serviço seja iniciado automaticamente quando o alvo apropriado for alcançado e o serviço estiver habilitado para iniciar automaticamente com

systemctl enable djalbat

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

systemctl daemon-reload

informação relacionada