系统服务在启动时失败

时间:2016-07-07 22:25:11

标签: node.js systemd

我试图让nodejs服务器在启动时运行,所以我创建了以下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(我认为这是我遇到问题的地方)。任何见解,甚至是不同的解决方案都将受到赞赏。

此外,一旦我登录系统,它就可以正常运行。

更新

该服务已启用,并正在通过journalctl进行日志记录。我将在7/11/16更新结果。

不确定为什么它第一次没有工作,但是在检查了journalctl时,问题是100%,MySQL还没有开始。我再次将其更改为After=MySQL.service并且效果非常好!

1 个答案:

答案 0 :(得分:3)

如果在journalctl的输出中根本没有提及该服务,则表明该服务未启用启用以在启动时启动。

让您在下次启动测试之前运行systemctl enable my-unit-name

此外,由于您依赖于MySQL的启动和运行,您应该使用类似于After=mysql.service的内容来声明它。确切的服务名称可能取决于您没有说明的Linux发行版。

添加User=root不会增加任何内容,因为默认情况下系统单元将由root运行。

当你说'#34;它失败"时,你没有指定它是在启动时失败,还是由systemctl start my-unit-name运行测试。

尝试启动服务后,如果您运行journalctl -u my-unit.name.service,则应该进行日志记录。

您可能还会考虑将StandardOutput=journal添加到您的单元文件中,以确保从您正在运行的服务中捕获输出。