我有一台装有 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