首先这样做了:
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文件,所以即使我没有指定它也应该使用它...
答案 0 :(得分:2)
如果出现问题,通常需要查看日志文件(假定所有命令都以root身份运行):
journalctl -u mosquitto
现在您的特定错误(Error: Unable to open log file /var/log/mosquitto/mosquitto.log for writing.
)暗示您遇到了权限问题。
mosquitto
守护程序正在运行的用户。注意:如果您在错误的用户下运行文件创建过程很容易获得生成文件的错误权限(只有一次就足够了 - 例如在测试期间)