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