項目中用的Qt開發的GUI程序,需要隨機自啟動。
最初嘗試過使用SuperVisor,但是會出現下面的錯誤。
qt.qpa.screen: QXcbConnection: Could not connect to display
Could not connect to any X display.
然后自己寫了一個控制台的程序監視進程,使用SuperVisor進行管理,但是只能把控制台程序啟動,控制台程序仍然無法啟動GUI程序,原因未知。
最后的解決方案是使用startx命令,
在SuperVisor的command命令后面加上startx,如下:
command =startx /home/dq/QtProj/QMoveTest/Debug/QMoveTest
使用該命令的弊端是默認將GUI程序的界面侵占Ubuntu的桌面,可以通過Ctrl+Alt+F7切換回Ubuntu的桌面。
因為項目的目的就是GUI程序占滿界面,該方法剛好滿足要求,對於那些需要進入到Ubuntu桌面再顯示GUI程序的需求不滿足。
控制台守護進程代碼:
鏈接: https://pan.baidu.com/s/1PytoXC9XP4ll11Z17oSHKg 密碼: uxzi
補充一個坑:
部署之后程序連不到數據庫,開始以為數據庫所在的用戶是root用戶無法訪問導致的。
實際上是當前路徑的問題。
比如:
以此種方式啟動程序,在程序獲取到的當前路徑是 /home/dq,並非/home/dq/QtProj/J1900Proj/J1900EntranceSystem-TH/Release
使用startx 也同樣,這就導致程序在錯誤的路徑下讀取配置。
程序中修改獲取路徑的方式即可,不要取當前路徑,在Linux獲取當前路徑應該都是對應到了PWD