02 QT 程序加入开机自启服务
本文档将介绍通过修改 systemd 实现开机自动启动 QT 程序
1 创建 systemd 配置文件
在 /etc/systemd/system/ 目录下,创建服务配置文件,以 qt_display.service 为例
# 在 /etc/systemd/system/ 目录下,创建服务配置文件
sudo vim /etc/systemd/system/qt_display.service
配置文件范例
# qt_display.service
[Unit]
Description=Qt Display Application
After=graphical.target
Requires=graphical.target
Wants=graphical.target
[Service]
Type=simple
ExecStartPre=/bin/sleep 10
ExecStart=/home/linaro/Desktop/ad_test/build-ad_display-Desktop-Debug/ad_display -d ad7606 -m 1
User=root
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/root/.Xauthority"
Environment="LD_LIBRARY_PATH=/home/linaro/Desktop/qwt-6.1.4/build/lib:$LD_LIBRARY_PATH"
Restart=on-failure
RestartSec=3
[Install]
WantedBy=graphical.target
配置文件各参数含义
[Unit]
Description=服务描述
After=该服务在什么目标或服务启动后启动
Requires=该服务需要某个目标或服务处于活动状态才能启动。
Wants=该服务希望某个目标或服务处于活动状态,但不会强制要求。
[Service]
Type=服务类型
ExecStartPre=主进程启动前完成的命令和脚本
ExecStart=启动服务要执行的命令---主进程
User=运行服务的用户身份
Environment=设置环境变量
Restart=重启服务要求
RestartSec=重启的延迟时间
[Install]
WantedBy=指定该服务在什么目标启动时被启动
2 启动系统服务
重新加载系统服务,启用并启动服务
# 重新加载系统服务
sudo systemctl daemon-reload
# 启用服务
sudo systemctl enable qt_display.service
#启动服务
sudo systemctl start qt_display.service
检查服务启动是否正常,若正常则重启系统,验证开机是否自动启动该服务,若有问题则执行下面指令查询错误
# 检查服务状态
sudo systemctl status qt_display.service
# 查看系统日志
journalctl -u qt_display.service
3 其他常用指令
# 禁用系统服务
sudo systemctl disable qt_display.service
#停止服务
sudo systemctl stop qt_display.service