解決一個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

相關文章
相關標籤/搜索