2016-07-07 5 views
1

Я пытаюсь получить nodejs сервера для запуска при запуске, так что я создал следующий Systemd блок файл:службы Systemd неудачи при запуске

[Unit] 
Description=TI SensorTag Communicator 
After=network.target 

[Service] 
ExecStart=/usr/bin/node /home/pi/sensortag-comm/sensortag.js 
User=root 

[Install] 
WantedBy=multi-user.target 

я не уверен, что я делаю неправильно здесь , Кажется, что он сработал до того, как скрипт nodejs даже начался, так как не происходит никаких протоколов. Мой скрипт зависит от mysql 5.5 (я думаю, что именно здесь я столкнулся с проблемой). Любое понимание, или даже другое решение было бы оценено.

Кроме того, он работает нормально, как только я войду в систему.

Update

Услуга включена, и логирование через journalctl. Я обновлю результаты 7/11/16.

Не уверен, почему это не сработало в первый раз, но при проверке журнала это проблема была 100%, что MySQL не запускался. Я еще раз изменил его на After=MySQL.service, и он отлично работал!

ответ

2

Если вы не указали какую-либо услугу на выходе journalctl, это может указывать на то, что услуга не была включена для запуска при загрузке.

Сделайте свой пробег systemctl enable my-unit-name перед следующим следующим тестом на ботинок.

Кроме того, поскольку вы зависите от того, что MySQL работает и работает, вы должны объявить это примерно чем-то вроде: After=mysql.service. Точное имя службы может зависеть от вашего дистрибутива Linux, о котором вы не указали.

Добавление User=root ничего не добавляет, поскольку системные блоки будут запускаться root по умолчанию в любом случае.

Когда вы сказали «сбой», вы не указали, было ли это сбоем во время загрузки или с тестовым прогоном от systemctl start my-unit-name.

После попытки запуска службы, необходимо запустить журнал, если вы запустите journalctl -u my-unit.name.service.

Возможно, вы также можете добавить StandardOutput=journal в свой файл устройства, чтобы убедиться, что вы также извлекаете выходные данные из службы, с которой вы работаете.

+0

Жаль, что я не был яснее, служба включена, и она пытается начать загрузку. Я не могу получить доступ к машине до понедельника и затем обновить вопрос с помощью результатов 'journalctl -u sensortag.service'. Просто отметим, что mysql 5.5 использует systemv вместо systemd (машина - малина pi, и я не склонен к настройке backports), поэтому попытка 'After = mysql.service', похоже, раньше не решала проблему, но, возможно, проблема в другом месте. Еще раз спасибо за помощь. – phelpsiv