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. OnlyShowInNotShowIn :这些参数用于定义在哪些桌面环境或菜单中显示应用程序。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

在这个示例中,除了之前提到的参数外,还添加了 StartupNotifyStartupWMClassKeywordsMimeTypeTryExecActions 等参数。每个 [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 参数指向了应用程序的可执行文件。
  • NameComment 参数分别定义了应用程序的名称和描述。
  • Icon 参数指向了应用程序的图标文件。
  • Terminal 设置为 false,表示应用程序不在终端窗口中运行。
  • Categories 定义了应用程序的类别,这里将其归类为"Utility"和"Application"。
  • HiddenNoDisplay 均设置为 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 的符号链接。

相关推荐
Jackey_Song_Odd1 小时前
解决Ubuntu下无法装载 Windows D盘的问题
linux·ubuntu
Linux运维技术栈1 小时前
Ansible(自动化运维)环境搭建及ansible-vault加密配置
运维·自动化·ansible
乔巴不是狸猫1 小时前
第11周作业
linux
Bessssss2 小时前
centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
linux·运维·centos
苹果醋32 小时前
Golang的文件加密工具
运维·vue.js·spring boot·nginx·课程设计
jwensh3 小时前
【Jenkins】Declarative和Scripted两种脚本模式有什么具体的区别
运维·前端·jenkins
silver6873 小时前
Linux 下的 GPT 和 MBR 分区表详解
linux
R-sz3 小时前
14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误“
linux·python·centos
大熊程序猿4 小时前
xxl-job docker 安装
运维·docker·容器
code_abc4 小时前
Shell 脚本编程基础:变量
linux