systemd se bloquea cuando inicio o reinicio un servicio

systemd se bloquea cuando inicio o reinicio un servicio

Soy nuevo en systemd después de actualizar a 16.04 y tengo un problema al iniciar y reiniciar los servicios. Cuando corro (por ejemplo)...

systemctl start djalbat.com

...parece funcionar, sin embargo, no recibo el mensaje, simplemente parece colgarse. Si ctrl-crecibo el mensaje y luego pruebo si el servicio se ha iniciado, parece que sí lo ha hecho. Me pregunto qué hay en la configuración que podría causar que esto suceda. Aquí lo tienes:

[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

WantedByAdemás, se agradecería que alguien pudiera señalar la necesidad de la última directiva.

Respuesta1

Entonces resultó que el comando que se ejecuta con la ExecStartconfiguración notenedormientras que el systemdservicio se configuró para un ejecutable de bifurcación. Esto lleva systemctla esperar la finalización del ejecutable, lo que provoca que la línea de comando no regrese.

La configuración correcta para un ejecutable que notenedores 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

Es WantedBynecesario para conectar esta unidad con un objetivo, por lo que esta unidad o servicio se inicia automáticamente cuando se alcanza el objetivo apropiado y el servicio está habilitado para iniciarse automáticamente con

systemctl enable djalbat

No olvide actualizar systemddespués de haber realizado cambios en sus archivos de servicio con

systemctl daemon-reload

información relacionada