【问题标题】:Error: Unable to write pid file Mosquitto v2.0.3错误:无法写入 pid 文件 Mosquitto v2.0.3
【发布时间】:2020-12-22 19:53:07
【问题描述】:

自从我在 Ubuntu 16.04 上更新 Mosquitto v2.0.3 后,用户无法连接到代理。

当我尝试使用/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf 运行时,它抛出了以下消息。 2020-12-22|12:37:02: Error: Unable to write pid file.

我看到有人遇到同样的问题,所以我在 mosquitto 配置中添加了pid_file /var/run/mosquitto/mosquitto.pid ,但问题并没有消失。

我有这个在/lib/systemd/system/mosquitto.service:

[Unit]
Description=Mosquitto MQTT Broker
Documentation=man:mosquitto.conf(5) man:mosquitto(8)
After=network.target
Wants=network.target

[Service]
Type=notify
NotifyAccess=main
ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto
ExecStartPre=/bin/chown mosquitto: /var/log/mosquitto
ExecStartPre=/bin/mkdir -m 740 -p /var/run/mosquitto
ExecStartPre=/bin/chown mosquitto: /var/run/mosquitto

[Install]
WantedBy=multi-user.target

mosquitto.conf文件配置为:

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

listener 1883

log_type error
log_type notice
log_type information
log_type debug
log_type all
log_dest topic 
log_type warning

allow_anonymous false
connection_messages true
max_keepalive 10
log_timestamp true
log_timestamp_format %Y-%m-%d|%H:%M:%S

password_file /etc/mosquitto/pwfile

####################################################
# MOSQUITTO LISTENER WITH SLL
####################################################

listener 8883
protocol mqtt
allow_anonymous false

#PARA BROKER EN PC
cafile /etc/mosquitto/certs/ca.crt
keyfile /etc/mosquitto/certs/server.key
certfile /etc/mosquitto/certs/server.crt

#PARA BROKER EN RASPBERRY PI 3
#cafile /etc/mosquitto/certs/ca_pi.crt
#keyfile /etc/mosquitto/certs/server_pi.key
#certfile /etc/mosquitto/certs/server_pi.crt

tls_version tlsv1.2

当我从终端运行 systemctl status mosquitto 时,它显示了以下消息...

● mosquitto.service - Mosquitto MQTT Broker
   Loaded: loaded (/etc/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since mar 2020-12-22 13:06:13 -04; 5s ago
     Docs: man:mosquitto(8)
           man:mosquitto.conf(5)
  Process: 22889 ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf (code=exited, status=1/FAILURE)
 Main PID: 22889 (code=exited, status=1/FAILURE)

dic 22 13:06:13 carmenmoncada systemd[1]: 

我不知道发生了什么,有人可以帮我解决这个问题吗? 提前致谢 问候。

【问题讨论】:

    标签: linux mqtt pid mosquitto


    【解决方案1】:

    sudo mkdir -m 777 蚊子

    请永远不要这样做!

    就地试试这个:

    sudo mkdir /var/run/mosquitto/ && sudo chown mosquitto: /var/run/mosquitto
    

    并放入/etc/mosquitto/mosquitto.conf

    ...
    pid_file /var/run/mosquitto/mosquitto.pid
    ...
    

    【讨论】:

      【解决方案2】:

      各位,我已经找到解决问题的方法了。

      我也设法让它工作了。 我手动创建了一个目录/var/run/mosquitto,所有权归用户mosquitto,然后自动创建了文件夹和文件。

        sudo mkdir -m 777 mosquitto
      

      在 mosquitto.conf 我设置

      pid_file /var/run/mosquitto/mosquitto.pid
      

      【讨论】:

      • 这将是由于 Mosquitto 2.0+ 制作 use of root/privileged user 的方式发生了变化。 this issue 中有一些关于 ubuntu 包的注释。
      • 'world' 'writeable' 不是一个很好的做法。您至少应该尝试 755 并确保该目录归您的“m​​osquitto”用户 ID 所有。
      猜你喜欢
      • 2012-02-01
      • 2021-08-30
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 2014-04-18
      • 2013-10-18
      • 1970-01-01
      相关资源
      最近更新 更多