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