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

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.mzph.cn/news/809120.shtml

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

相关文章

大数据架构的演变与多种大数据架构类型说明——解读大数据架构(一)

文章目录 前言数据架构的演变关系型数仓数据湖现代数仓数据网络数据湖仓数据网格 前言 在搭建和使用大数据组件前,预先投入时间设计和构建正确的数据架构绝对至关重要。如果在前期没有设计正确的数据架构就开始实施方案,在后期想更改架构设计是十分困难…

Java基础_16LikedList[开发不用】_Object类_Set集合

昨天的内容回顾 List接口下面的方法:add(Object o); 添加数据到集合容器中add(int index, Object o);在指定下标下面&#xff0c;添加数据到集合容器中addAll(Collection<? extends E> e);addAll(int index, Collection<? extends E> e);remove(Object o);remov…

12-pyspark的RDD算子注意事项总结

目录 相近算子异同总结相近变换算子异同foreach和foreachPartitionfold和reducecoalesce和repatition 相近动作算子异同cache和persist 算子注意事项需要注意的变换算子需要注意的动作算子 PySpark实战笔记系列第三篇 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第…

Android性能优化RecyclerView预加载LayoutManager的getExtraLayoutSpace,Kotlin

Android性能优化RecyclerView预加载LayoutManager的getExtraLayoutSpace&#xff0c;Kotlin RecyclerView默认只加载当前屏幕肉眼可见区域的有限item数量&#xff0c;有些场景下&#xff0c;需要在屏幕外不可见的区域多加载一批item出来&#xff0c;这有时候被称之为“预加载”…

2024考研调剂须知

----------------------------------------------------------------------------------------------------- 考研复试科研背景提升班 教你快速深入了解掌握考研复试面试中的常见问题以及注意事项&#xff0c;系统的教你如何在短期内快速提升自己的专业知识水平和编程以及英语…

QEMU MINI2440 如何设置显示分辨率?

MINI2440: Option string mini24402tb MINI2440: t ignored, touchscreen not compiled in MINI2440: LCD 0:240x320 1:800x480 [2:1024x768] 嘿嘿你又懂了&#xff1f; nboot kernel setenv bootargs root/dev/mtdblock3 rootfstypejffs2 consolettySAC0,115200 mini24401t…

前端服务请求跨域被拦截,Java后端Springboot服务解决办法

跨域问题 跨域前端遇到的问题&#xff1a; Access to XMLHttpRequest at ‘http://www.xxx.xxxx/api/x/d/xc’ from origin ‘http://127.0.0.1:3000’ has been blocked by cors policy: No ‘Access-Contorl-Allow-Origin’ header is present on the requested resource. …

IDE Eval Reset —— idea 重置试用期插件安装

idea 重置试用期插件安装 一、在线安装&#xff1a; 1、打开IntelliJ IDEA 2、file—> setting —> plugins 添加三方插件库 点击后&#xff0c;跳出弹框点击号&#xff0c;添加图中的网址 https://plugins.zhile.io3、搜索 IDE Eval Reset &#xff0c;安装插件 4…

Excel·VBA二维数组S形排列

与之前的文章《ExcelVBA螺旋数组函数》将一维数组转为二维螺旋数组 本文将数组转为S形排列的二维数组&#xff0c;类似考场座位S形顺序 Function S形排列(ByVal arr, ByVal num_rows&, ByVal num_cols&, Optional ByVal mode$ "row")将数组arr转为num_rows…

动态规划求台阶

动态规划可以用来求解台阶问题&#xff0c;即在一个楼梯上&#xff0c;每次只能跨一个台阶或两个台阶&#xff0c;问有多少种不同的方式可以走到楼梯的顶部。 我们可以定义一个状态变量dp[i]&#xff0c;表示走到第i个台阶的不同方式数。则在第i个台阶上&#xff0c;只有两种走…

OpenHarmony开发案例:【分布式计算器】

介绍 本示例使用分布式能力实现了一个简单的计算器应用&#xff0c;可以进行简单的数值计算&#xff0c;支持远程拉起另一个设备的计算器应用&#xff0c;两个计算器应用进行协同计算。 远程拉起&#xff1a;通过StartAbility实现远端应用的拉起。 协同计算&#xff1a;通过…

ios包上架系列 一、打包机Flutter项目环境配置

打包的时候一定要断开网络&#xff0c;上线包名只能在打包机配置 1、Xcode 需要从其它电脑空投 版本号&#xff1a;14.3.1 升级到Xcode14.3后发现,从这个版本开始,苹果从Xcode中移除了ARC相关的库,会导致fluter项目下的原生工程使用Xcode编译原生代码没 有问题, 但是flutter项…

Python小工具提升工作效率【附完整版,可下载word】

1、多个ppt汇总成一个ppt的python代码实现: import win32com.client as win32 import os import re def find(s): pat = re.compile(r"\d+") result = pat.match(s) return int(result.group(0)) def join_ppt(path:str): """ :param path: ppt所…

springboot上传模块到私服,再用pom引用下来

有时候要做一个公司的公共服务模块。不能说大家都直接把代码粘贴进去&#xff0c;因为会需要维护很多份&#xff1b;这样就剩下两个方式了。 方式一&#xff1a;自己独立部署一个公共服务的服务&#xff0c;全公司都调用&#xff0c;通过http、rpc或者grpc的方式&#xff0c;这…

如何安装PyFluent

0.什么是PyFluent? 官方介绍如下&#xff1a; PyFluent 是 PyAnsys 生态系统的一部分&#xff0c; 允许您在所选的 Python 环境中结合使用 Fluent 与其他 PyAnsys 库和外部 Python 库一起使用。 PyFluent 实现了客户端-服务器体系结构。它使用谷歌遥控器 过程调用或 gRPC 接…

基于GSP工具箱的NILM算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于GSP工具箱的NILM算法matlab仿真。GSP是图形信号处理的缩写&#xff0c;GSP非常适合对未知数据进行分类&#xff0c;尤其是当训练数据非常短时。GSPBox的基本理论是谱图论和…

WPF网格布局

1介绍: Grid为WPF中最常用的布局容器, 它可以将一个区域分为若干个行或列功用其他组件使用。 2&#xff1a;网格标签Grid.ColumnDef Grid网格区域Grid.ColumnDefinitions自定义列 只能设置宽度 不能设置高度ColumnDefinition 网格布局中列的区域(可以设置宽度&#xff0c…

构建强大的物联网平台系统架构:关键步骤与最佳实践

随着物联网&#xff08;IoT&#xff09;技术的快速发展和广泛应用&#xff0c;越来越多的企业开始意识到搭建一个强大而可靠的物联网平台系统架构的重要性。一个完善的物联网平台可以帮助企业高效地管理和监控各种连接设备&#xff0c;并实现数据的收集、处理和分析。在本文中&…

npm i -g nodemon 遇到的下载卡住及运行权限问题解决记录

一、下载nodemon原因 nodemon作用&#xff1a;用node环境运行js文件时可以实时刷新运行出结果 (即修改js代码后不需再手动重新运行js文件) 二、下载卡住 reify:semver:timing reifyNode:node_modules/nodemon Completed 卡住位置&#xff1a;reify:semver: timing reifyNode…

【muzzik 分享】3D模型平面切割

# 前言 一年一度的征稿到了&#xff0c;倒腾点存货&#xff0c;3D平面切割通常用于一些解压游戏里&#xff0c;例如水果忍者&#xff0c;切菜这些&#xff0c;今天我就给大家讲讲怎么实现3D切割以及其原理&#xff0c;帮助大家更理解3D中的 Mesh(网格)&#xff0c;以及UV贴图和…