![systemd está travando quando inicio ou reinicio um serviço](https://rvso.com/image/898924/systemd%20est%C3%A1%20travando%20quando%20inicio%20ou%20reinicio%20um%20servi%C3%A7o.png)
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-c
receber 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 WantedBy
directiva, agradeceríamos.
Responder1
Acontece que o comando que é executado com a ExecStart
configuração nãogarfoenquanto o systemd
serviço foi configurado para um executável bifurcado. Isso leva systemctl
a 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 systemd
depois de fazer alterações nos arquivos de serviço com
systemctl daemon-reload