
Я новичок в 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