最近在开发Arm板上QT应用程序,这个程序需要开机后自动运行。 目前实现的方式是采用gnome-session-properties方式编辑好,然后做个系统固件,以后其他Arm板烧写了该固件,就能实现QT应用程序自启动。
新的改变
感觉这种方式有局限,那就是自启动的功能在固件中,如果我想写个脚本,执行后,就让该程序开机自启动,并且程序崩溃后,能自动拉起。
百度搜索一番后,决定采用crontab方式实现,加入@reboot /path/for/my_script.sh即可。
但是始终无法看到程序启动,下面就要排查问题了。现实把启动QT程序改成向某个文件echo helloworld,这下能看到成功了,说明这个开机自启动任务是成功了的,但是为啥看不到程序界面呢。
用ps aux | grep 查找该程序,是能找到的,说明程序也在运行,我的QT程序是有界面的,为啥看不到呢。
DISPLAY
既然是显示的问题 ,再请教同事之后,才知道
export DISPLAY=:0
export XAUTHORITY=~/.Xauthority
需要在我的脚本文件中加上上面导出语句。export DISPLAY=:0,设置当前用户的图形显示的位置(当前机器),这是因为cron默认的环境变量设置不包括这个$DISPLAY
总结
之前linux系统一直是我的薄弱项,特别是shell脚本,也有点排斥恐惧,这次通过自己主动改进软件自启动shell脚本,增加了解决linux问题的信心,不畏难,这个得在不断学习中坚持。