【问题标题】:Linux equivalent of Windows "Startup" folderLinux 相当于 Windows“启动”文件夹
【发布时间】:2023-08-04 04:15:01
【问题描述】:

我想在我的嵌入式 Linux 桌面启动时运行一个程序,就像 Windows 在“启动”文件夹中运行程序一样。我该怎么做?

具体来说,我的目标硬件是 Beaglebone Black,Debian 变体(rev C 板)。窗口管理器是默认的。

【问题讨论】:

    标签: linux debian beagleboneblack


    【解决方案1】:

    事实证明,启动程序有多种方法。 LXDE - 窗口管理器 - 支持在 ~/.config/autostart 或 /etc/xdg/autostart 中自动启动 .desktop 文件 - 万岁!

    http://wiki.lxde.org/en/Autostart

    除了...虽然我可以通过这种方式运行一个简单的程序作为概念验证,但当我尝试运行我的程序时,它失败了。我不知道为什么。文件

    .xsession-errors.old

    包含 X 服务器错误(“资源暂时不可用”)。

    我现在使用另一种机制 - 从 shell 脚本运行代码(这是必要的,因为我需要为程序指定一个工作目录)。这使用 /etc/xdg/lxsession/ 中的“自动启动”文件,至少它可以工作。好样的。我要么必须在运行前“睡眠 5”,要么在运行前加上一个 @ 符号,如果它失败则强制重试。它看起来有点像我的代码所依赖的东西在自动启动机制找到它的准确时间没有到位。我找不到确保启动顺序的方法。这显然是一堆臭的东西。

    【讨论】:

      【解决方案2】:

      在 Linux 中,这些称为初始化脚本,通常位于 /etc/init.d。它们的定义方式因不同发行版而异,但如今许多使用 Linux 标准基础 (LSB) 初始化脚本格式。

      这方面的好读物: https://wiki.debian.org/LSBInitScripts https://www.debian-administration.org/article/28/Making_scripts_run_at_boot_time_with_Debian

      【讨论】:

      • 不是真的; init 脚本更像 Windows 服务,无论您是否登录都会运行。启动项更像是会话管理器的会话脚本,它仅在您启动新会话时运行(即登录,或以其他方式设法运行桌面)。