因为使用的是源码编译安装的EMQ,而不是使用的yum安装的EMQ,因此无法使用systemctl enable emqttd让EMQ开机自启,于是就决定写一个脚本,将其注册成一个服务,然后让其开机自启。
1、运行vi /etc/init.d/emqttd
在文件中加入以下内容:
#!/bin/sh
#
# emqttd
#
# Startup script for emqttd.
#
# chkconfig: 2345 90 10
# description: emqttd is mqtt broker.
#
# source function library
. /etc/rc.d/init.d/functions
export HOME=/root
start() {
echo "starting emqttd..."
#此处根据实际安装目录修改下面的路径
cd /home/cesec/EMQ/emqx-rel-2.3.11/_rel/emqttd && ./bin/emqttd start
}
stop() {
echo "stopping emqttd..."
#此处根据实际安装目录修改下面的路径
cd /home/cesec/EMQ/emqx-rel-2.3.11/_rel/emqttd && ./bin/emqttd stop
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop}"
RETVAL=2
esac
注: 复制这个脚本到Linux可能会丢失最上面的一部分,不知道为什么,通过xshell打开Linux,然后复制这些内容到文件中,会丢失一部分,自己复制过去以后检查清楚是否丢失一些内容。不然就算注册成一个服务也没法用。
2、保存退出,然后运行以下命令将脚本注册为服务
chmod +x /etc/init.d/emqttd
chkconfig --add emqttd
再运行chkconfig --list查看是否出现以下内容,出现则代表加入成功了。
3、现在EMQ就已经能做到开机自启了
可以运行shutdown -r now,重启系统,等待开启以后访问EMQ的Dashboard,看是否已经随着系统自启而自启了。
4、emqttd已经被注册成为了一个服务,以后启停EMQ都可以通过以下命令了,不用再到emqttd的bin下启动了,但是可能由于才注册成为一个服务,没重启系统之前没法使用以下的命令,会出现以下的情况,建议再运行完1和2的步骤以后最好运行以下3,然后下面的命令也能使用了。
#启动服务
systemctl start emqttd
#停止服务
systemctl stop emqttd
#重启服务
systemctl restart emqttd
参考:https://blog.csdn.net/u011267225/article/details/82387351