从ubuntu移植过来的mosquitto库
由于之前我直接在 arm平台(树莓派)
直装过mosquitto
即运行sudo apt-get install mosquitto
,系统已经默认帮我配置好了一些东西
配置好的东西包括:
1、配置文件直接存放于/etc/mosquitto
2、mosquitto的可执行文件存放于 /usr/bin 和/usr/sbin 和/user/local/下的一些文件
细心的小伙伴就会发现好像/usr/bin/和/usr/local/bin里面的有些可执行文件重了,那到底运行哪一个呢?
首先:我们得了解这两个目录得区别
关于/usr/bin和/usr/local/bin
首先注意usr 指 Unix System Resource,而不是User
/usr/bin 下面的都是系统预装的可执行程序,会随着系统升级而改变。
/usr/local/bin 目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件。
如果两个目录下有相同的可执行程序,谁优先执行受到PATH环境变量的影响,比如我的一台服务器的PATH变量为
echo $PATH (查看可执行文件环境变量路径指令)
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
这里/usr/local/bin优先于/usr/bin, 一般都是如此。
关于mosquitto自启动问题
当我执行从ubuntu上移植过来的mosquitto来开启mqtt服务器时,系统提示1883 这个端口被占用了,调用
ps -aux | grep mosquitto
查看 原来系统后台在运行着mosquitto的线程。
这时候我进入/etc/init.d
系统自启动配置文件夹,发现了一个mosquitto的shell脚本文件。
查看之后原来系统开机就为我们运行了mosquitto -c /etc/mosquitto/mosquitto.conf
这条指令 默认ip是我们的主机号,默认端口号是 1883
/etc/init.d/mosquitto 部分代码
从图片中我们可以看出系统是执行的 /usr/sbin目录下的mosquitto,而不是user/local/sbin
当然,我们可以通过
pgrep mostuitto
指令来查找出mosquitto的线程id
然后用kill
指令来杀掉该线程,我们就能运行移植过来的mosquitto使用1883端口了