系统开机时自动运行程序(Debian)

系统开机时自动运行程序(Debian)

我有一台装有 Debian 9.1 的 beaglebone black。我们为其 GPIO 编写了一个 C++ 程序,我们希望该程序在系统开启时始终运行。我们怎样才能做到这一点?

答案1

一个极其简单的解决方案是添加一个@reboot仅运行二进制文件的 cron 作业。

crontab -e为需要运行代码的用户(例如root crontab)执行此操作sudo crontab -e,并添加以下行

@reboot /path/to/some/executable

这将安排作业在每次系统启动时运行。

请参阅crontab(5)手册了解更多信息 ( man 5 crontab)。

根据程序的功能,这可能就足够了,也可能太简单了。

答案2

您可以编译该程序并将run_gpio其保存在已知路径中,例如/path/to/run_gpio。它必须被标记为 root 可执行:

$ sudo chmod 755 /path/to/run_gpio

然后配置 Debian 的init系统来启动你的程序。

您可以在这里找到解释: http://xmodulo.com/how-to-automatically-start-program-on-boot-in-debian.html

在 Debian 中,名为 /etc/init.d 的目录包含 init 进程在启动和关闭期间执行的脚本列表。因此,为了在启动时自动运行特定的程序或脚本,可以创建相应的init.d脚本。

$ sudo vi /etc/init.d/run_gpio
除了 vi 之外,您还可以使用 nano。

将这些行放入 init.d 目录中的新文件中:

#! /bin/sh
# /etc/init.d/run_gpio
case "$1" in start)
/path/to/run_gpio
;; esac

最后,使 init.d 脚本可执行,并将 init.d 脚本添加到默认运行级别,以便可以在启动时(以及关机期间)调用该脚本。

$ sudo chmod 755 /etc/init.d/run_gpio
$ sudo update-rc.d run_gpio defaults

相关内容