【发布时间】:2023-08-04 04:15:01
【问题描述】:
我想在我的嵌入式 Linux 桌面启动时运行一个程序,就像 Windows 在“启动”文件夹中运行程序一样。我该怎么做?
具体来说,我的目标硬件是 Beaglebone Black,Debian 变体(rev C 板)。窗口管理器是默认的。
【问题讨论】:
标签: linux debian beagleboneblack
我想在我的嵌入式 Linux 桌面启动时运行一个程序,就像 Windows 在“启动”文件夹中运行程序一样。我该怎么做?
具体来说,我的目标硬件是 Beaglebone Black,Debian 变体(rev C 板)。窗口管理器是默认的。
【问题讨论】:
标签: linux debian beagleboneblack
事实证明,启动程序有多种方法。 LXDE - 窗口管理器 - 支持在 ~/.config/autostart 或 /etc/xdg/autostart 中自动启动 .desktop 文件 - 万岁!
http://wiki.lxde.org/en/Autostart
除了...虽然我可以通过这种方式运行一个简单的程序作为概念验证,但当我尝试运行我的程序时,它失败了。我不知道为什么。文件
.xsession-errors.old
包含 X 服务器错误(“资源暂时不可用”)。
我现在使用另一种机制 - 从 shell 脚本运行代码(这是必要的,因为我需要为程序指定一个工作目录)。这使用 /etc/xdg/lxsession/ 中的“自动启动”文件,至少它可以工作。好样的。我要么必须在运行前“睡眠 5”,要么在运行前加上一个 @ 符号,如果它失败则强制重试。它看起来有点像我的代码所依赖的东西在自动启动机制找到它的准确时间没有到位。我找不到确保启动顺序的方法。这显然是一堆臭的东西。
【讨论】:
在 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
【讨论】: