解决一个emqttd trace 没法打开的问题

emqttd这个东西作的真心不咋地,以前有emq_auth_mysql的plugin死活没法启动的问题,如今又碰到trace没法打开的问题。html

查看emqttd服务器当前链接的全部client:mysql

emqttd_ctl clients list

要打开其中一个的client的trace log:linux

emqttd_ctl trace client A0A3B87007B0 log/A0A3B87007B0.log

结果显示trace成功:sql

可是在log目录下(log目录和bin目录平级),根本就没有A0A3B87007B0.log这个文件的产生。囧!!服务器

误打误撞,看到了emqttd的错误日志/var/log/emqttd/error.logspa

因为权限问题,A0A3B87007B0.log没法建立!(这就是我以为emqttd不咋地的重要缘由,明明trace文件没有建立成功,你还报说successfully!)。因此只能从权限的角度去解决。日志

查看emqttd的进程,发现emqttd的相关进程都是以emqtt做为有效用户运行的,尽管我是以root用户来启动emqttd服务的,可是不知因为何种缘由,我始终没有找到方法来修改emqttd服务的有效用户。code

因此只好换个思路,查看系统的全部用户:htm

cat /etc/passwd

用户emqtt对应目录为/var/lib/emqttd,将trace文件放在该目录下,如:blog

emqttd_ctl trace client A0A3B87007B0 /var/lib/emqttd/A0A3B87007B0.log

A0A3B87007B0.log文件建立成功。若是须要关闭,只要:

emqttd_ctl trace client A0A3B87007B0 off

 

总结:

Linux进程对资源访问涉及到Linux用户的权限管理,其中的概念有实际用户,有效用户,文件全部者等。可参考:

https://www.linuxidc.com/Linux/2018-10/154540.htm

对emqttd的操做可参考:

https://developer.emqx.io/docs/broker/v2/cn/commands.html

相关文章
相关标签/搜索