ubuntu 应用程序设置 开机自启动

news2024/11/20 23:37:13

1. 通过.desktop方式

autostart   中.desktop 配置文件

1.1 用户级自启动

登录后才可以启动服务。

  • 可视化配置:在ubuntu自带的可视化程序来配置,就是StartupApplications,它在启动台中可以找到。

  • 在ubuntu下目录是 ~/.config/autostart 添加配置文件

1.2配置文件解析

重要参数:

  1. Type:定义条目的类型。对于应用程序,通常设置为 Application
  2. Exec:定义启动应用程序时要执行的命令或脚本。
  3. Name:应用程序的名称。
  4. Comment:关于应用程序的简短描述或注释。
  5. Icon:应用程序的图标路径。
  6. Terminal:如果设置为 true,则应用程序将在终端窗口中运行。
  7. Categories:定义应用程序所属的类别,用于在应用程序菜单中组织应用程序。
  8. Hidden:如果设置为 true,则应用程序不会在应用程序菜单中显示。
  9. NoDisplay:如果设置为 true,则条目不会在桌面环境的应用程序菜单中显示,但可以通过其他方式(如命令行)启动。
  10. X-GNOME-Autostart-enabled:这是一个非标准的键,但在许多GNOME桌面环境中使用,用于指示应用程序是否应在登录时自动启动。设置为 true 以启用自动启动。

其他参数:

  1. Version:指定 .desktop 文件遵循的 Desktop Entry 文件标准版本。

  2. GenericName:应用程序的通用名称,用于在应用程序菜单中提供更广泛的描述。

  3. MimeType:定义与该应用程序相关联的MIME类型。这通常用于文件关联,即当用户双击某种类型的文件时,自动启动这个应用程序。

  4. Keywords:用于搜索和识别应用程序的关键词列表。

  5. StartupNotify:如果设置为 true,则系统会显示启动通知,告知用户应用程序正在启动。

  6. StartupWMClass:指定窗口管理器如何识别和分组应用程序的实例。这对于确保应用程序窗口在任务栏或窗口列表中正确显示和分组很有用。

  7. TryExec:指定一个命令或脚本,用于检查应用程序是否可以运行。如果此命令或脚本不存在或无法执行,则 .desktop 文件可能被视为无效,并且应用程序可能不会在菜单中显示。

  8. OnlyShowIn 和 NotShowIn:这些参数用于定义在哪些桌面环境或菜单中显示应用程序。OnlyShowIn 列出应该显示此条目的桌面环境,而 NotShowIn 列出不应显示此条目的桌面环境。

  9. Actions:定义应用程序可以执行的一组动作或命令。每个动作通常有自己的 [Desktop Action 名称] 部分,其中包含 ExecName 和其他相关参数。

[Desktop Entry]  
Type=Application  
Name=My Custom App  
Comment=This is my custom application  
Exec=/path/to/your/app  
Icon=/path/to/icon.png  
Terminal=false  
Categories=Utility;Application;  
StartupNotify=true  
StartupWMClass=my-custom-app  
Keywords=custom;utility;tool  
MimeType=application/x-my-custom-app-file;  
TryExec=/path/to/your/app  
OnlyShowIn=GNOME;XFCE;  
Actions=OpenNewWindow;  
  
[Desktop Action OpenNewWindow]  
Name=Open New Window  
Exec=/path/to/your/app --new-window

在这个示例中,除了之前提到的参数外,还添加了 StartupNotifyStartupWMClassKeywordsMimeTypeTryExec 和 Actions 等参数。每个 [Desktop Action] 部分定义了一个新动作,这里定义了一个名为 "OpenNewWindow" 的动作,当用户在应用程序菜单中选择这个动作时,会执行指定的 Exec 命令。

[Desktop Entry]  
Type=Application  
Exec=/path/to/your/app  
Name=My Custom App  
Comment=This is my custom application that starts automatically on login  
Icon=/path/to/icon.png  
Terminal=false  
Categories=Utility;Application;  
Hidden=false  
NoDisplay=false  
X-GNOME-Autostart-enabled=true
  • Exec 参数指向了应用程序的可执行文件。
  • Name 和 Comment 参数分别定义了应用程序的名称和描述。
  • Icon 参数指向了应用程序的图标文件。
  • Terminal 设置为 false,表示应用程序不在终端窗口中运行。
  • Categories 定义了应用程序的类别,这里将其归类为“Utility”和“Application”。
  • Hidden 和 NoDisplay 均设置为 false,表示应用程序在应用程序菜单中可见。
  • X-GNOME-Autostart-enabled 设置为 true,表示该应用程序将在登录时自动启动。

请注意,.desktop 文件的参数可能因桌面环境的不同而有所差异。上述示例适用于基于GNOME的桌面环境,如Ubuntu的默认桌面环境。如果你使用的是其他桌面环境,可能需要查阅该环境的文档以获取准确的参数列表和含义。

重点:

Exec=下可以配置环境变量,例如定义日志输出位置,之前发现启动程序后日志为输出到相对目录下。

Exec=env LOG_PATH=/path/to/your/log/directory /path/to/your/app在你的应用程序代码中,你可以读取这个环境变量来确定日志文件的路径。

在 .desktop 文件的 Exec 字段中,你可以使用各种环境参数来配置应用程序的启动环境。虽然环境参数本身并不是由 .desktop 文件规范定义的,而是由 Unix 和 Linux 的 shell 环境提供的,但以下是一些常见的环境参数示例,你可以在 Exec 字段中使用它们:

系统和环境变量

  • $HOME:当前用户的主目录。
  • $USER:当前用户的用户名。
  • $DISPLAY:当前使用的 X 显示器的名称。
  • $PATH:包含可执行文件搜索路径的环境变量。
  • LANG∗∗和∗∗LANGUAGE:定义当前的语言环境。

自定义环境变量

你可以在 Exec 字段中直接设置自定义的环境变量,例如:

Exec=env MY_CUSTOM_VAR=value /path/to/your/app

在这个例子中,MY_CUSTOM_VAR 是一个自定义的环境变量,其值为 value。应用程序可以通过适当的方式(如使用 getenv 函数)来读取这个环境变量的值。

使用现有的环境变量

你也可以在 Exec 字段中引用已经存在的环境变量,例如:

Exec=/path/to/your/app --config=$HOME/.config/myapp/config.ini

在这个例子中,$HOME 环境变量被用来构建配置文件的完整路径。

组合多个环境变量

你还可以组合多个环境变量来构建命令或参数,例如:

Exec=env MY_DIR=$HOME/myapp /path/to/your/app --data-dir=$MY_DIR/data

在这个例子中,我们首先设置了一个名为 MY_DIR 的环境变量,然后在同一个 Exec 字段中引用了它。

注意事项

  • 安全性:在使用环境变量时,要注意安全性问题。确保不要将敏感信息(如密码或私钥)作为环境变量传递,除非你确定这样做是安全的。
  • 引号处理:如果环境变量的值包含空格或特殊字符,你可能需要使用引号来确保它们被正确解析。例如:MY_VAR="value with spaces"
  • 传递多个参数:如果需要传递多个环境变量,可以使用 env 命令来设置它们,如上面示例所示。也可以直接在 Exec 字段中使用多个赋值表达式,用分号分隔。

系统级三个目录的区别


/etc/xdg/autostart:
这个目录用于添加图形界面下的系统级自启动程序。通常,在这里放置的是以.desktop为后缀的文件,
这些文件指定了要启动的程序和相关设置。当图形界面启动时,会自动运行这些程序。

/etc/init.d:
这个目录包含了系统启动时需要的脚本。这些脚本通常以shell脚本的形式存在,用于启动或停止系统服务。
不过,要注意的是,自Ubuntu 15.04版本开始,/etc/init.d目录已不再被推荐使用,而是被systemd服务替代。

/etc/rc.local:
这个文件是一个在系统启动时执行的shell脚本。可以将需要在系统启动时运行的命令或程序添加到这个文件中。
不过,同样需要注意的是,在某些新版本的Ubuntu中,/etc/rc.local文件可能默认不存在,需要手动创建并确保其可执行。

值得注意的是: 修改这些目录和文件需要 root 权限,普通用户无法操作

系统级自启动配置
可以发现在 /etc/xdg/autostart 下的文件都是以 .desktop 为后缀名的文件,在我之前的文章中有个创建桌面图标的教程,那个要配置的文件也是 .desktop 。没错,他俩一样。
那么他们最明显的一个区别就是 在用户自启动的 .desktop 中都含有 X-GNOME-Autostart-enabled 这个键,
而且它的值都是 true, 他表示为是否自动启动该脚本。
以下是 .desktop 文件的格式
开头还是 [Desktop Entry] ,这是 .desktop 的统一格式
然后是一些常见的 键

                        
原文链接:https://blog.csdn.net/m0_73865314/article/details/135880221

3. 使用符号链接

如果日志文件已经被写到了 home 目录下,并且你不想修改代码或环境,你还可以考虑在 home 目录下的日志文件夹和程序的期望相对路径之间创建一个符号链接。这样,虽然日志文件实际上在 home 目录下,但程序会以为它们在期望的相对路径下。

在Linux中,你可以使用 ln -s 命令来创建符号链接,例如:

ln -s ~/logs /path/to/your/app/relative/path/to/logs

这条命令会在 /path/to/your/app/relative/path/to/logs 创建一个指向 ~/logs 的符号链接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1593696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kotlin项目引用

概要: 记录项目引用kotlin具体事项 1 object下build.gradle buildscript {//声明引用版本ext.kotlin_version "1.4.20"repositories {google()mavenCentral()}dependencies {classpath "com.android.tools.build:gradle:4.2.0"//引用kotlinc…

DataX案例,MongoDB数据导入HDFS与MySQL

【尚硅谷】Alibaba开源数据同步工具DataX技术教程_哔哩哔哩_bilibili 目录 1、MongoDB 1.1、MongoDB介绍 1.2、MongoDB基本概念解析 1.3、MongoDB中的数据存储结构 1.4、MongoDB启动服务 1.5、MongoDB小案例 2、DataX导入导出案例 2.1、读取MongoDB的数据导入到HDFS 2…

Ubuntu去除烦人的顶部【活动】按钮

文章目录 一、需求说明二、打开 extensions 网站三、安装 GNOME Shell 插件四、安装本地连接器五、安装 Hide Activities Button 插件六、最终效果七、卸载本地连接器命令参考 本文所使用的 Ubuntu 系统版本是 Ubuntu 22.04 ! 一、需求说明 使用 Ubuntu 的过程中,屏…

【网络编程】高性能并发服务器源码剖析

hello !大家好呀! 欢迎大家来到我的网络编程系列之洪水网络攻击,在这篇文章中,你将会学习到在网络编程中如何搭建一个高性能的并发服务器,并且我会给出源码进行剖析,以及手绘UML图来帮助大家来理解&#xf…

机器学习—特征工程(三)

什么是特征工程 特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。 意义︰会直接影响机器学习的效果 特征工程的位置与数据处理的比较 pandas:—个数据读取非常方便以及基本的处理格式的工具sklearn:对于特征的处理提…

鹏哥C语言复习——数据存储

目录 版本差异: 数据类型: 进制表示: 大小端储存: 数据运算: 浮点型在内存中的存储: 版本差异: debug和release的区别: 在栈区开辟地址一般是先从高地址开辟 debug创建数组和单…

深度学习图像处理基础工具——opencv 实战2 文档扫描OCR

输入一个文档,怎么进行文档扫描,输出扫描后的图片呢? 今天学习了 opencv实战项目 文档扫描OCR 问题重构:输入图像 是一个含有文档的图像——> 目标是将其转化为 规则的扫描图片 那么怎么实现呢? 问题分解&#…

leetcode.45题:跳跃游戏II

Leetcode.45题:跳跃游戏II /* 题意的理解: nums[0] 只能跳 1 ~ nums[0]步 依次类推:从nums[0] - nums[n - 1] 最少需要多少步数 nums 2 3 1 1 4 nums[0] 2,初始只能跳 1/2步,如跳1步,达到nums[1] 而nums[1] 3,顾第二…

Python学习笔记22 - 文件操作

文件读写的原理 文件读写的操作 常用的文件打开模式 文件对象的常用方法 with语句(上下文管理器)

kubekey 离线安装harbor、k8s、kubesphere

目录 参考文献 了解kubekey 英文和中文 前提条件 部署准备 下载kubukey 离线包配置和制作 配置离线包 制作离线包 离线安装集群 复制KubeKey 和制品 artifact到离线机器 创建初始换、安装配置文件 安装镜像仓库harbor 初始化harbor 项目 修改配置文件 安装k8s集…

一.表单校验

为什么要表单验证? 是为了减轻服务器的压力,让用户体验更好,保证输入的数据符合要求 常用的表单验证 日期格式 表单元素是否为空 用户名和密码 E-mail 地址 身份证号码 实现验证的思路 问题:当输入的表单数据不符合要求时&…

内网渗透-windows权限维持的方法

windows权限维持的方法 文章目录 windows权限维持的方法一、影子账户二、粘滞键后门三、logon scripts后门五、注册表自启动后门六、屏幕保护程序后门七、计划任务后门八、服务自启动后门九、黄金票据十、白银票据十二、bitsadmin十五、CLR劫持 一、影子账户 1.使用如下命令创…

你真的会处理python代码异常吗?

Python 使用称为异常(exception)的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停…

CodeGemma: Open Code Models Based on Gemma

最近几天,对大模型生成代码的能力比较感兴趣,特此学习了一下大模型怎么在IDE上进行,自动补全你想要的代码。 大模型源码理解-以Gemma为例子 最近也在使用阿里的通义灵码,感觉还挺好用的。通义灵码 摘要: CodeGemma基…

Linux ARM平台开发系列讲解(QEMU篇) 1.2 新添加一个Linux kernel设备树

1. 概述 上一章节我们利用QEMU成功启动了Linux kernel,但是细心的小伙伴就会发现,我们用默认的defconfig是没有找到设备树源文件的,但是又发现kernel启动时候它使用了设备树riscv-virtio,qemu,这是因为qemu用了一个默认的设备树文件,该章节呢我们就把这个默认的设备树文件…

【设计模式学习】单例模式和工厂模式

꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转…

明月三千里许红:25年磨一剑 拒绝网红式短期主义

这是一个关于明月三千里烤肉品牌如何在25年企业经营风口浪尖中,寻求长久生存和发展的故事;也是一个关于明月三千里烤肉品牌如何在25年中追逐流量的同时,不失去初心和品质的深度思考! 在当今快速变化的餐饮市场中,淄博烤…

【CSS】利用Vue实现数字翻滚动画效果

利用Vue实现数字翻滚动画效果 在很多数据可视化的需求中,动态呈现数据变化是一个常见且具有较强视觉冲击力的手段,尤其是数字的实时变化。今天我们将探讨如何使用 Vue.js 和 CSS3 来实现数字的翻滚动画效果,即模拟真实物体在Z轴上翻动的效果…

使用cmake进行打包,包含可执行程序和动态依赖库

平常代码开发中,有时候需要将写的程序打包成压缩包放到目标设备上进行运行测试。用CMake管理工程,实现使用make -jnproc package指令可以将工程进行打包,可执行文件存储在bin文件夹中,依赖库存储在lib文件夹中。 示例 1.工程目录结…

选择自动化工具是一个关键的决策过程

好的自动化软件测试工具,不仅可以有效的缩短全生命周期的交付周期,还可以提高测试的有效性,还可以保证更好的高质量的交付。工具的选型是一项重要的决策过程,工具的采用涉及到企业的效率、成本和长期发展。 1、需求分析 确组织希…