systemd зависает при запуске или перезапуске службы

systemd зависает при запуске или перезапуске службы

Я новичок в systemd после обновления до 16.04 и столкнулся с проблемой запуска и перезапуска служб. Когда я запускаю (например)...

systemctl start djalbat.com

...вроде бы работает, однако я не получаю приглашение обратно, оно просто зависает. Если я ctrl-cполучаю приглашение обратно и затем проверяю, запущена ли служба, то, похоже, она это сделала. Интересно, что в конфигурации может вызвать это? Вот:

[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

Также, если кто-то сможет указать на необходимость последней WantedByдирективы, это будет оценено по достоинству.

решение1

Так вот, оказалось, что команда, которая выполняется с конфигурацией, ExecStartневилкатогда как systemdслужба была настроена на разветвляющийся исполняемый файл. Это привело systemctlк ожиданию for исполняемого файла, что привело к невозвращению командной строки.

Правильная конфигурация для исполняемого файла, который невилказаключается в использовании 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

Требуется WantedByдля соединения этого блока с целью, чтобы этот блок или служба запускались автоматически при достижении соответствующей цели, а служба могла запускаться автоматически с

systemctl enable djalbat

Не забудьте обновиться systemdпосле внесения изменений в файлы сервиса с помощью

systemctl daemon-reload

Связанный контент