我已经在我的 ubuntu 机器上安装了 mosquitto 服务器和客户端软件包。当我运行命令“mosquitto”来运行 mosquitto 服务器时,我收到一个错误“错误:地址已在使用中”。为什么我会收到此错误?我该如何解决这个问题?
5 回答
我遇到了同样的问题,并通过杀死正在运行 mosquitto 的进程来解决问题。首先,定位 mosquitto 进程 id:
ps -ef | grep mosquitto
这应该向您揭示任何与蚊子相关的过程。例如说进程 id 是12345,那么你可以用这个杀死它:
sudo kill 12345
之后Error:address already in use消息消失了,mosquitto 能够再次正常运行。
ubuntu 上的安装会自动为您启动代理。尝试连接以检查它:
mosquitto_sub -t '$SYS/#' -v
mosquitto-clients
如果您尚未安装该软件包,则需要安装该软件包。
我发现如果你有:
socket_domain ipv4
前 :
listener 1883 yourhostname
在您的配置中,它会导致“地址已在使用中”,您只需颠倒顺序...
软件包安装程序将 mosquitto 设置为systemd服务并自动启动它为您运行。它还将 mosquitto 配置为在重新启动时启动,因此您无需手动启动它。
但有时在控制台窗口中运行它可能会有所帮助,例如测试新的配置文件,或观察输出以查看客户端建立和断开连接等。为此,您需要停止后台服务,您可以使用systemctl来执行此操作:
$ systemctl stop mosquitto.service
当您完成测试并想要启动后台服务备份时:
$ systemctl start mosquitto.service
要检查它,请使用以下status
命令:
$ systemctl status mosquitto.service
● mosquitto.service - Mosquitto MQTT Broker
Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-05-10 10:17:41 EDT; 1 day 6h ago
Docs: man:mosquitto.conf(5)
man:mosquitto(8)
...
Main PID: 1110 (mosquitto)
Tasks: 1 (limit: 76805)
Memory: 5.3M
CGroup: /system.slice/mosquitto.service
└─1110 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
May 10 10:17:41 carter systemd[1]: Starting Mosquitto MQTT Broker...
May 10 10:17:41 carter systemd[1]: Started Mosquitto MQTT Broker.
这表明它正在运行、启动时、进程(主)PID 以及它正在使用的配置文件等等。
只需等待 1 分钟,即可再次执行熄火命令。这是我遵循的并使其正常工作
第一步:journalctl -u mosquitto
第2步:服务蚊子停止//而不是systemctl stop蚊子
只是为了检查它是否成功关闭使用这个可选 - 步骤 3:systemctl status mosquitto.service
最后
第四步:服务蚊子开始