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 的符号链接。

相关推荐
热爱嵌入式的小许1 小时前
Linux基础项目开发1:量产工具——显示系统
linux·运维·服务器·韦东山量产工具
韩楚风5 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学5 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO5 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu76 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我6 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、6 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程6 小时前
Linux中环境变量
linux
挥剑决浮云 -6 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
小O_好好学7 小时前
CentOS 7文件系统
linux·运维·centos