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的操做可参考: