Запретить брокеру mosquitto (MQTT) прослушивать порт с помощью командной строки

Когда я впервые запустил брокера Mosquitto (MQTT), проблем не было. Но, однако, во второй раз, когда я запустил его, используя конфигурацию по умолчанию, я не смог успешно запустить код из-за следующей ошибки:

1379497253: mosquitto версии 1.2 (дата сборки 2013-09-17 17: 59: 39 + 0530), начиная с 1379497253: используется конфигурация по умолчанию. 1379497253: открытие сокета прослушивания ipv6 на порту 1883. 1379497253: ошибка: адрес уже используется

Я хотел бы знать, как остановить брокера из командной строки. Будет хорошо, если кто-нибудь поможет.


person user2430996    schedule 18.09.2013    source источник


Ответы (5)


Вы не говорите, какую ОС вы используете, но предполагая, что это Linux и у вас есть mosquitto, работающий в фоновом режиме, вы просто используете команду kill.

Используйте ps, чтобы найти pid запущенного в данный момент экземпляра mosquitto, затем уничтожьте pid.

person hardillb    schedule 18.09.2013
comment
kill the pid не должен быть лучшим ответом. Поскольку он работает как служба, остановить службу - лучший подход. - person manasouza; 24.03.2018
comment
@manasouza, учитывая полное отсутствие информации, указанной в вопросе, это был единственный гарантированный способ остановить его. Мы не знали наверняка, что он работает как служба. - person hardillb; 24.03.2018

москит становится службой.

sudo vi /etc/mosquitto/mosquitto.conf #more detail in `man mosquitto.conf`

sudo vi /etc/mosquitto/conf.d/custom.conf #add or change listening port as your need

sudo service mosquitto restart
person ileadu    schedule 01.04.2015

Если вы не знаете PID, вы можете использовать «pkill» вместо «kill» в Linux. Команда: "pkill mosquitto"

person KingAlex1985    schedule 20.12.2013
comment
У меня PKill работает. у моего vps нет servicectl, и служба mosquitto stop также не работает. так что спасибо. - person XBasic3000; 15.05.2021

Вы можете использовать свой собственный файл пакетного сценария, например mosquit.sh в bash. Это мой сценарий, чтобы остановить его на CentOS.

#!/bin/sh
sudo kill $(ps aux |awk '/mosquitto/ {print $2}')
person tommybee    schedule 19.07.2017

Предполагая, что это служба linux, команда kill прекратит использовать только этот конкретный сокет и откроется на другом сокете после уничтожения PID. На redhat убить службу будет systemctl stop mosquitto

person Jared Gongloff    schedule 03.01.2019