在做專案的時候遇到乙個需求,需要開機啟動乙個服務,一開始除錯的時候使用的是命令列執行命令,但是真正使用的時候就必須整合到韌體裡面去讓其開機自動開啟
首先想到的必然是在init.rc裡面新增服務,我的是rk3326平台,init.rc位置在system/core/rootdir下,如何新增service服務是一門學問.接下來就一一介紹.
編寫你需要執行的指令碼,指令碼一般是以.sh為字尾,指令碼內容以#!bin/sh開頭,然後後面接你的指令,如我的指令碼檔案
#!bin/sh
turenproc pebble-i2s
在init.rc裡面新增服務,服務是以service開頭,緊接你的服務名字,然後指明需要開機啟動的指令碼目錄,具體如下:
service su_turenproc /system/bin/su_turenproc.sh
user root
group root
disabled
seclabel u:r:shell:s0
oneshot
在這個服務中,我的服務名字叫su_turenproc,需要執行的指令碼是/system/bin/下的su_turenproc.sh,這個指令碼檔案就是在1中編寫的指令碼檔案.
緊接著user root和group root意思是使用 root 許可權。
seclabel u:r?s0這句的具體含義大概是設定init程序的安全上下文
oneshot說明的是該操作只會執行一次,並不像其他帶有 restart 指令的 service 一樣當被 kill 調之後會重新調起。如果你希望被kill掉之後重新調起,那就不寫.
新增完上面的服務之後還不行,還有一步最容易忽視的一步
啟動剛剛新增的服務
on property:sys.boot_completed=1
start su_turenproc
這一步很重要,我就是做完第一步和第二步之後直接編譯燒錄,發現新增的服務並沒有生效,折騰了很久之後才搞定,就是因為沒有加第3步啟動服務.
接下來編譯燒錄你就會發現開機執行了你編寫的指令碼.
redmine 開機自動執行
想要redmine在centos上開機自動執行,於是就在 etc rc.local裡面加上了一行指令碼 bin sh echo start redmine usr local ruby bin ruby usr local redmine script server webrick e produc...
如何使Android應用開機時自動啟動
如果需要在android開機時自動啟動應用程式,可以通過響應android.intent.action.boot completed廣播訊息來實現,android系統啟動結束時,會發出 android.intent.action.boot completed 訊息。具體步驟如下 1.定義乙個broa...
如何使Android應用開機時自動啟動
如果需要在android開機時自動啟動應用程式,可以通過響應android.intent.action.boot completed廣播訊息來實現,android系統啟動結束時,會發出 android.intent.action.boot completed 訊息。具體步驟如下 1.定義乙個broa...