讓程式開機自啟動

讓程式開機自啟動

我有一個 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 中停止。

相關內容