麒麟操作系统设置QT程序开机自启动有效方法

本文详细介绍了在麒麟操作系统上配置QT程序开机自启动的两种方法:通过QT程序打包并设置环境变量,以及创建启动脚本并设置系统服务。包括环境变量配置、linuxdeployqt打包、图形界面和无界面程序的启动脚本编写及服务设置。
在麒麟操作系统上设置QT程序开机自启动的两种简单有效的方法。支持请点赞!

一、QT程序打包

1.设置环境变量

设置QT和linuxdeployqt的环境变量,已设置可忽略该步骤。

在/etc/profile文件末尾添加一下内容:

export PATH=/usr/local/Qt-5.15.2/bin:/home/MyWork/build-linuxdeployqt-unknown-Release/bin:/usr/local/Qt-5.15.2/lib:/usr/local/Qt-5.15.2/plugins:/usr/local/Qt-5.15.2/plugins/platforms/:$PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Qt-5.15.2/lib

export PLUGIN_PATH=/usr/local/Qt-5.15.2/plugins:$PLUGIN_PATH

export QML2_PATH=/usr/local/Qt-5.15.2/qml:$QML2_PATH

export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/local/Qt-5.15.2/plugins/platforms/

export QT_DEBUG_PLUGINS=1

2.程序打包

使用linuxdeployqt工具进行打包。

自行下载linuxdeployqt-master编译安装或下载已编译好的执行体

linuxdeployqt App.exe -appimage

二、创建程序启动脚本

1.在程序执行文件目录下创建startup.sh文件

2.编辑startup.sh文件

输入以下内容(“//”后为本文添加的注释说明,后同):

#!/bin/bash

#export QT_QPA_PLATFORM=’offscreen’           //当为无界面程序时须将注释放开

source /etc/profile                           //使环境变量生效

cd /*/*                                       //设置为AppRun所在目录路径

./AppRun                                      //该文件为linuxdeployqt工具生成文件

三、开机自启动设置

开机自启动针对有无图形界面程序将采用不同的设置方式。

1.针对有图形界面程序

(1).进入系统目录

cd /etc/xdg/autostart/

(2).在/etc/xdg/autostart/目录下新建AppRun.desktop文件(文件名可自定义)

sudo touch AppRun.desktop

(3).赋予AppRun.desktop权限

sudo chmod 777 AppRun.desktop

(4).编辑AppRun.desktop文件内容

输入以下内容:

[Desktop Entry]

Type=Application

Name=AppRun             //名称可自定义

Exec=/*/startup.sh      //设置为startup.sh所在目录路径

(5).reboot重启测试。

2.针对无图像界面程序

重点注意:设置无图形界面程序服务时需将脚本中的export QT_QPA_PLATFORM=’offscreen’放开,否则会报引用QT库错误,暂时找不到解决方案。

(1).进入系统目录

cd /etc/systemd/system

(2).在/etc/systemd/system/目录下新建AppRun.service文件(文件名可自定义)

sudo touch AppRun.service

sudo chmod 777 AppRun.service

(3).编辑AppRun.service文件内容,执行脚本路径根据实际情况修改。

[Unit]

Description=AppRun

After=AppRun.service

[Service]

User=root

Group=root

WorkingDirectory=/home//MyWork/bin/unix/Debug/

Type=forking

ExecStart=/home/MyWork/bin/unix/Debug/startup.sh

ExecReload=/home/MyWork/bin/unix/Debug/startup.sh -s reload

ExecStop=/home/MyWork/bin/unix/Debug/startup.sh -s stop

Execenable=/home/MyWork/bin/unix/Debug/startup.sh

Restart=on-abnormal

[Install]

WantedBy=multi-user.target

(4).依次执行以下命令设置服务属性。

systemctl enable AppRun.service                //设置AppRun.service 为服务启动项

systemctl start AppRun.service                 //启动服务

systemctl status AppRun.service                //查看服务状态

(5).reboot重启测试。

四、使用命令查看进程状态。

ps -ef|grep AppRun

<think>嗯,用户想在麒麟操作系统设置进程开机自动启动。这是一个常见的系统管理需求,我需要根据麒麟操作系统的特性提供可靠的方法麒麟操作系统作为国产Linux发行版,基于Ubuntu或CentOS构建,开机自启动机制遵循Linux标准规范。目前主流方法有两种:桌面环境启动和systemd服务管理。用户可能是系统管理员或开发者,需要部署后台服务或应用。 从引用内容看,麒麟官方文档提供了两种典型方案: 1. 桌面环境方案适合图形界面应用,通过.desktop文件实现(引用1和引用3)。这种方法需要用户登录才生效,适用于普通应用软件。 2. 系统级方案使用systemd服务(引用2),适合守护进程和服务器程序,能在系统启动时无需登录就运行。redis和tomcat的示例很有参考价值。 用户没有说明进程类型,所以需要分情况建议: 如果是图形应用(如QT程序),推荐.desktop方案,操作简单: - 在~/.config/autostart/创建.desktop文件 - 关键字段包括Exec(可执行路径)、Name(显示名称)、Type=Application - 需要给文件添加执行权限 如果是后台服务,必须用systemd方案: - 在/etc/systemd/system/创建.service文件 - 配置服务单元[Unit]、执行命令[Service]和启动级别[Install] - 需要systemctl启用服务 潜在问题要注意: - 路径必须使用绝对路径,尤其是脚本路径 - 桌面方案需要"执行权限"这个细节容易被忽略 - systemd服务的Type类型(simple/forking)对进程监控有影响 用户可能遇到的困难是权限问题,比如普通用户修改systemd服务需要sudo权限。建议在回复中强调安全操作步骤,避免直接操作/etc目录的风险。 相关扩展问题也值得准备: - 如何查看自启动项(systemctl list-unit-files | grep enabled) - 桌面方案与systemd方案的区别场景 - 开机启动失败的排查方法(journalctl -xe) 最后需要提醒用户:麒麟不同版本(V4/V10)可能有差异,建议先确认系统版本。对于生产环境,更推荐systemd方案因为稳定性更好。</think>在麒麟操作系统设置进程开机自启动主要有两种标准方法,根据进程类型选择: ### 方法一:桌面应用自启动(需用户登录) **适用场景**:图形界面程序(如QT应用) 1. 创建`.desktop`文件 ```bash sudo nano ~/.config/autostart/进程名.desktop ``` 2. 写入以下内容(**关键字段**): ```ini [Desktop Entry] Type=Application Name=自定义名称 Exec=/绝对路径/可执行文件 # 或启动脚本路径 X-GNOME-Autostart-enabled=true ``` *示例(参考引用[1][3]):* ```ini [Desktop Entry] Type=Application Name=MyApp Exec=/home/user/app/startup.sh ``` 3. 保存后重启验证 > 注:此方法仅在用户登录后生效[^1][^3] ### 方法二:系统服务自启动(无需登录) **适用场景**:后台守护进程/服务 1. 创建systemd服务文件 ```bash sudo nano /etc/systemd/system/进程名.service ``` 2. 写入配置(**关键参数**): ```ini [Unit] Description=服务描述 After=network.target # 依赖项 [Service] Type=simple # 或 forking(后台进程) ExecStart=/绝对路径/可执行文件 # 启动命令 Restart=on-failure # 失败时重启 [Install] WantedBy=multi-user.target # 启动级别 ``` *示例(参考引用[2]):* ```ini [Unit] Description=Tomcat Service After=network.target [Service] Type=forking ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target ``` 3. 启用服务 ```bash sudo systemctl daemon-reload sudo systemctl enable 进程名.service # 启用开机启动 sudo systemctl start 进程名.service # 立即启动 ``` ### 注意事项 1. **路径必须绝对**:所有`Exec`命令需完整路径(如`/usr/bin/myapp`) 2. **权限管理**: - 桌面方案:文件需有执行权限 `chmod +x startup.sh` - 系统服务:建议用`User=username`指定运行用户 3. **环境变量**:系统服务需在`[Service]`中添加`Environment="PATH=/custom/path:$PATH"` 4. **日志查看**:`journalctl -u 服务名.service` 排查故障 > 实测建议:对于后台服务优先采用**systemd方案**(方法二),稳定性更高且不依赖图形界面[^2]。图形程序若需用户交互则用桌面方案(方法一)。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值