通过命令行远程启动程序,和一般双击或通过登录桌面启动程序,有细微的环境差别。
启动服务
启动QT编写的后台服务,结果报错:could not connect to display。
首先,编译程序的时候,应当关闭GUI支持。这个属于编译参数错配。
其次,可以在启动之前设置环境变量。
export QT_QPA_PLATFORM=offscreen
×××
无法启动GUI程序
通过SSH启动GUI程序,结果报错:could not connect to display。
这是因为SSH环境中没有图形界面。必须告诉程序使用哪个显示器。可以通过设置环境变量来解决。
export DISPLAY=:0
×××
具体显示器的编号,可以实际登录一个有图形界面的账号后,执行echo $DISPLAY来查看。
启动程序卡住了?
远程启动程序和本机启动程序有一个差别:远程启动时,不能让远程session退出,否则程序会被挂起。
一般要用nohup模式启动。
nohup ./your_program &
另外注意,用nohup和&符号启动程序后,无法获知命令是否运行正常,必须在执行后进行单独的检查。可以通过查看日志关键词或者检查进程状态来确认。
Windows启动GUI程序无法启动
宿主进程可能是SYSTEM账号,无法访问桌面。可以使用psexec解决。
下载Sysinternals工具集,解压后找到psexec.exe
通过命令行启动程序
psexec -i -s your_program.exe