Ubuntu:设置程序开机自启动
环境:ubuntu20.04
此种方法适用于有界面的程序。
一、Desktop Entry文件介绍
Desktop Entry 文件以 “.desktop” 为后缀名。.desktop文件实际上是一种文本格式的配置文件,其中记录了应用程序的各种信息。这些信息涵盖了应用的名称、简要描述、启动指令以及图标等。也可以把.desktop文件理解为windows中的快捷方式。
以下是一个最简单的.desktop的描述
[Desktop Entry]
Type=Application
Name[zh_CN]=我的应用
Exec=/home/qing222/code/test_delete/build-HelloWorld-unknown-Debug/HelloWorld.desktop 文件字段详解
| 字段名 | 必需 | 描述 | 示例 | |
|---|---|---|---|---|
| 基本字段 | ||||
| Type | ✅ | 条目类型 | Application,Link,Directory | |
| Name | ✅ | 显示名称 | Name=Firefox | |
| Exec | ✅ | 执行命令 | Exec=firefox %u | |
| 显示字段 | ||||
| Icon | ❌ | 图标 | Icon=firefox或绝对路径 | |
| Comment | ❌ | 描述/提示 | Comment=网页浏览器 | |
| GenericName | ❌ | 通用名称 | GenericName=Web Browser | |
| 分类字段 | ||||
| Categories | ❌ | 应用程序分类 | Categories=Network;WebBrowser; | |
| Keywords | ❌ | 搜索关键词 | Keywords=web;browser; | |
| 行为控制 | ||||
| Terminal | ❌ | 是否在终端运行 | Terminal=false | |
| NoDisplay | ❌ | 菜单中隐藏 | NoDisplay=false | |
| Hidden | ❌ | 完全禁用 | Hidden=false | |
| 高级字段 | ||||
| MimeType | ❌ | 关联文件类型 | MimeType=text/html; | |
| StartupNotify | ❌ | 启动通知 | StartupNotify=true | |
| StartupWMClass | ❌ | 窗口类关联 | StartupWMClass=firefox | |
| OnlyShowIn | ❌ | 仅显示环境 | OnlyShowIn=GNOME; | |
| NotShowIn | ❌ | 不显示环境 | NotShowIn=KDE; | |
| 国际化 | ||||
| Name[locale] | ❌ | 本地化名称 | Name[zh_CN]=火狐 | |
| Comment[locale] | ❌ | 本地化描述 | Comment[zh_CN]=网页浏览器 | 
.desktop文件的存放位置决定了其作用范围:
系统级:/usr/share/applications/,所有用户可见,通常由软件包管理器安装。
用户级:~/.local/share/applications/,仅当前用户可见,用于自定义或覆盖系统应用。
桌面图标:直接放在用户主目录的桌面文件夹(如~/Desktop/),但需确保文件名以.desktop结尾。
二、操作步骤
1、创建.desktop文件
创建文件后直接编辑
touch HelloWorld.desktop2、提供权限
chmod +x HelloWorld.desktop3、将.desktop文件移到~/.config/autostart/路径下
用户级别:放在~/.config/autostart/路径下
系统级别:放在/etc/xdg/autostart路径下
如果autostart文件夹不存在则手动创建。
4、重启系统
重启系统后程序就会自动运行。取消自启动直接删除.desktop文件即可。
三、遇到的问题
1、将GateWay.desktop文件移到~/.config/autostart/后没有开机自启动
解决方法:修改GateWay.desktop文件,增加打印输出/home/Desktop/GateWay_start.log文件
[Desktop Entry]
Type=Application
Exec=bash -c "/opt/workspace/runningspace/GateWay > /home/Desktop/GateWay_start.log 2>&1"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[zh_CN]=光纤机网关自启动
Name=光纤机网关自启动
Comment[zh_CN]=
Comment=查看打印日志,发现是找不到qt相关的库导致程序没跑起来
/home/embedsky/Desktop/GateWay: error while loading shared libraries: libQt5Charts.so.5: cannot open shared object file: No such file or directory
这说明是环境变量没设置好。关键是无论是为root用户还是普通用户设置了qt的环境变量,还是提示找不到这个qt库。说明开机自启动所使用的环境变量和root用户或者普通用户不一样
继续修改GateWay.desktop文件,在运行程序前在当前环境导入qt的库
[Desktop Entry]
Type=Application
Exec=bash -c "export LD_LIBRARY_PATH=\"/usr/local/Qt-5.15.4/lib\" && /opt/workspace/runningspace/GateWay"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[zh_CN]=光纤机网关自启动
Name=光纤机网关自启动
Comment[zh_CN]=
Comment=问题解决。
