3

首先这样做:

systemctl stop mosquitto
update-rc.d mosquitto remove
rm /etc/init.d/mosquitto

单元文件如下:

[Unit]
Description=MQTT v3.1 message broker
After=network.target
Requires=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Restart=always

[Install]
WantedBy=multi-user.target

的结果:

sudo systemctl status mosquitto -l

是:

● mosquitto.service - MQTT v3.1 message broker
   Loaded: loaded (/etc/systemd/system/mosquitto.service; enabled)
   Active: failed (Result: start-limit) since Sun 2017-01-01 19:44:03 GMT; 3min 23s ago
  Process: 683 ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf (code=exited, status=1/FAILURE)
 Main PID: 683 (code=exited, status=1/FAILURE)

Jan 01 19:44:03 raspberrypi systemd[1]: Unit mosquitto.service entered failed state.
Jan 01 19:44:03 raspberrypi systemd[1]: mosquitto.service holdoff time over, scheduling restart.
Jan 01 19:44:03 raspberrypi systemd[1]: Stopping MQTT v3.1 message broker...
Jan 01 19:44:03 raspberrypi systemd[1]: Starting MQTT v3.1 message broker...
Jan 01 19:44:03 raspberrypi systemd[1]: mosquitto.service start request repeated too quickly, refusing to start.
Jan 01 19:44:03 raspberrypi systemd[1]: Failed to start MQTT v3.1 message broker.
Jan 01 19:44:03 raspberrypi systemd[1]: Unit mosquitto.service entered failed state.

我做了很多谷歌搜索,并尝试了一些类似的单元文件,但似乎没有任何效果。

手动运行该命令 ( /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf) 给出:

Error: Unable to open log file /var/log/mosquitto/mosquitto.log for writing.
Error found at /etc/mosquitto/mosquitto.conf:11.
Error: Unable to open configuration file.

奇怪的是,运行/usr/sbin/mosquitto,即不指定 .conf 文件,工作正常。/etc/mosquitto/mosquitto.conf 是默认的 .conf 文件,所以即使我没有指定它也应该使用它......

4

1 回答 1

5

如果出现问题,一个好的开始通常是查看日志文件(假设所有命令都以 root 身份运行):

journalctl -u mosquitto

现在,您的特定错误 ( Error: Unable to open log file /var/log/mosquitto/mosquitto.log for writing.) 提示您遇到了权限问题。

  • 检查mosquitto运行守护程序的用户。
  • 检查此用户是否已阅读相应内容。对所有必要文件(例​​如日志文件)的写访问权

注意:如果您在错误的用户下运行文件创建过程,很容易获得生成文件的错误权限(仅一次就足够了 - 例如在测试期间)

于 2017-01-01T21:32:27.020 回答