让程序开机自启动

让程序开机自启动

我有一个 C++ 程序,我希望它在 yocto 发行版上启动时运行。

我尝试在 /etc/init.d/ 上添加一个名为 test.sh 的简单脚本,其中我只有:

echo "start my program"
ProgramName

使用“ProgramName”,当我在 shell 上执行时,我的程序就会运行。如果我执行这个新脚本,它会让我的程序运行。

我将其添加为 rc5 文件夹的符号链接。我尝试重新启动但没有任何反应。我还需要做其他事情吗?

我怎样才能让它与食谱一起工作。最后,我希望将其自动化。

答案1

在启动时运行程序的一个简单解决方案是为其创建一个 crontab 条目,如下所示:

@reboot /path/to/program

对于非系统守护程序的程序来说,这通常足够了。

@reboot标签将确保该程序在系统启动时启动并且受支持最多cron 实现:

@reboot        Run once, at startup.          
@yearly        Run once a year, "0 0 1 1 *".  
@annually      (same as @yearly)              
@monthly       Run once a month, "0 0 1 * *". 
@weekly        Run once a week, "0 0 * * 0".  
@daily         Run once a day, "0 0 * * *".   
@midnight      (same as @daily)               
@hourly        Run once an hour, "0 * * * *". 

有关详细信息,请参阅man 5 crontab您的系统。

答案2

请检查这个问答进行类似的讨论。并在脚本中添加标头:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Sample_GT02 daemon startup script
# Description:       Sample Server for GT02 class 
### END INIT INFO

答案3

在你的食谱中添加:

  • INITSCRIPT_NAME 并将需要安装的初始化脚本的文件名添加到etc/init.d 中。
  • INITSCRIPT_PARAMS 并指定脚本的运行级别以及脚本应运行的初始化级别。

例如,您可以参考“poky/meta/recipes-connectivity/connman/connman.inc”中的文件。您将看到以下示例用法。

    INITSCRIPT_NAME = "connman"
    INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."

在上面的代码片段中,connman 脚本安装在 ect/init.d 中,并且该脚本的运行级别为 05,脚本在 initlevels 2、3 和 5 中启动,并在 0、1 和 6 级中停止。

相关内容