systemd服务(二):Qt程序做自启动时,不能正常运行

*: systemd服务中文手册:https://www.jinbuguo.com/systemd/systemd.exec.html

 

背景:

不管是,直接运行qt程序,还是使用sh脚本来运行qt程序,都是正常的

但是加入到 systemd 自启动服务后,总是启动不了Qt程序,通过 sudo ststemctl status testhuqt 和  journalctl -u testhuqt 查询日志和报错,分析是环境的原因

 

原因:

systemd服务自有一套环境,和用户环境不一样,所以导致qt运行不起来,需要设置systemd的环境

 

解决方法:

1. 在安装deb包的时候,在 postinst 文件,写入当前的系统环境

2. 在卸载deb包的时候,在 prerm 文件,删除文件

 

 

 

3. 编写  service 文件,使用设置的环境 EnvironmentFile

# systemd服务中文手册:https://www.jinbuguo.com/systemd/systemd.exec.html
[Unit]
Description=testhuqt                         

[Service]
Type=simple 
EnvironmentFile=/opt/testhuqt/test1.env        
# 设置工作目录      
#WorkingDirectory=/opt/testhuqt
ExecStart=/opt/testhuqt/start.sh
ExecStop=/usr/bin/killall testhuqt
Restart=always
RestartSec=5

[Install]
#multi-user.target:表示多任务终端窗口;graphical.target:表示图形化界面
WantedBy=graphical.target

 

然后 qt 程序就可以正常自启动了

 

posted @ 2024-12-28 11:27  十一的杂文录  阅读(229)  评论(0)    收藏  举报