मैं Ubuntu 16.04 में स्टार्टअप पर Mosquitto MQTT ब्रोकर कैसे शुरू कर सकता हूं


10

मैं Ubuntu 16.04 पर एक मॉस्किटो एमक्यूटीटी ब्रोकर चलाने की कोशिश कर रहा हूं। मेरे पास 14.04 से निर्देश हैं, लेकिन 16.04 के बाद से अब स्टार्टअप का उपयोग नहीं किया जाता है, मैं यह पता नहीं लगा सकता हूं कि सिस्टमैड में कैसे परिवर्तित किया जाए।

यहाँ 14.04 के लिए आदेश हैं:

description "Mosquitto MQTT broker"
start on net-device-up
respawn
exec /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

संपादित करें:

यह वही है जो मुझे अब तक मिला है। जब मैं रिबूट और रन करता systemctl status mosquitto.serviceहूं तो मैं दिखाता हूं कि मच्छर भरी हुई है लेकिन सक्रिय नहीं है:

[Unit]
Description=Mosquitto MQTT Broker

[Service]
WorkingDirectory=/usr/sbin/mosquitto
ExecStart=/etc/mosquitto/mosquitto.conf
Restart=always

[Install]
WantedBy=multi-user.target

संपादित करें 2:

दौड़ा हुआ sudo systemctl enable mosquitto.service। अब त्रुटि निकास कोड है:

Process: 1720 ExecStart=/etc/mosquitto/mosquitto.conf (code=exited, status=200/CHDIR)

जवाबों:


9

इंस्‍टॉल sudo apt install mosquittoकरने 16.04से /etc/init.d/mosquittoस्क्रिप्ट जुड़ जाती है । systemd उस स्क्रिप्ट को उत्पन्न करने के लिए उपयोग करता है /run/systemd/generator.late/mosquitto.service, और यही वह कहता है:

# Automatically generated by systemd-sysv-generator

[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/init.d/mosquitto
Description=LSB: mosquitto MQTT v3.1 message broker
Before=multi-user.target
Before=multi-user.target
Before=multi-user.target
Before=graphical.target
Before=shutdown.target
After=remote-fs.target
After=systemd-journald-dev-log.socket
Conflicts=shutdown.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/etc/init.d/mosquitto start
ExecStop=/etc/init.d/mosquitto stop
ExecReload=/etc/init.d/mosquitto reload

अंदर /etc/init.d/mosquittoदेखना हमें बताता है कि

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf पहले से ही डिफ़ॉल्ट रूप से चलाया जा रहा है

तो बस अपने config डाल /etc/mosquitto/conf.d(द्वारा संदर्भित mosquitto.conf) और आनंद लें


एक नियमित systemd सेवा होने के नाते, आप कर सकते हैं:

  • systemctl status mosquitto इसकी वर्तमान स्थिति को देखने के लिए
  • sudo systemctl (start|stop) mosquitto वर्तमान सत्र के लिए स्थिति बदलने के लिए
  • sudo systemctl (enable|disable) mosquitto स्टार्टअप व्यवहार को बदलने के लिए (वर्तमान स्थिति को प्रभावित किए बिना)

वह फ़ाइल आपको कैसे बताती है कि मच्छर के साथ चलाया जा रहा है -c option?
पेट्रस थेरॉन

@PetrusTheron /etc/init.d/mosquittoइस startतर्क के साथ फ़ाइल में क्या होता है ।
मिहेल मलोस्तानिडिस

/etc/mosquitto/conf.dडीआईआर के अंदर मेरे विन्यास को नजरअंदाज किया जाता है। मैं कैसे पुन: उत्पन्न कर सकता हूं /run/systemd/generator.late/mosquitto.service?
क्रिस

@chris शायद यह संदर्भित नहीं है /etc/mosquitto/mosquitto.conf? वहाँ क्या है?
मिहेल मलोस्तनिदिस

0

आपकी इकाई फ़ाइल की लाइनें ExecStart=और WorkingDirectory=लाइनें पूरी तरह से गलत हैं। क्या आप निष्पादन योग्य फ़ाइल (!) को कार्यशील निर्देशिका के रूप में प्रयोग करते हुए एक कॉन्फिगर फाइल शुरू करने की कोशिश कर रहे हैं?

अगर मैं सही तरीके से समझूं, तो उचित यूनिट फ़ाइल होगी:

[Unit]
Description=Mosquitto MQTT Broker
After=network.target

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

[Install]
WantedBy=multi-user.target

इसके अलावा, कृपया इकाई को शुरू करने और सक्षम करने को भ्रमित न करें। इस बारे में मेरे ऐसे ही जवाब पढ़ें:


0

सुनिश्चित करें कि आपके पास मच्छर चल रहा है:

ps -aux | grep mosquitto

और आप डिफ़ॉल्ट में यह है .conf :

listener 1883
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.