日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 的 init.rc 文件简介【转】

發(fā)布時間:2024/9/20 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 的 init.rc 文件简介【转】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自:http://blog.csdn.net/yimiyangguang1314/article/details/6268177

init.rc由許多的Action和Service組成。每一個語句占據(jù)一行,并且各個關(guān)鍵字被空格分開.

由 # (前面允許有空格)開始的行都是注釋行(comment)

一個actions 或 services 的開始隱含聲明了一個新的段,所有commands 或 options 屬于最近的聲明。在第一個段之前的 commands 或 options 都會被忽略

每一個actions 和 services 都有不同的名字。后面與前面發(fā)生重名的,那么這個后面重名的將被忽略或被認(rèn)為是一個錯誤。

actions其實(shí)就是一組被命名的命令序列。actions 都有一個觸發(fā)條件,觸發(fā)條件決定了action何時執(zhí)行。當(dāng)一個事件發(fā)生如果匹配action的觸發(fā)條件,那么這個action將會被添加到預(yù)備執(zhí)行隊列的尾部(除非它已經(jīng)在隊列當(dāng)中)?

每一個action中的命令將被順序執(zhí)行。init進(jìn)程負(fù)責(zé)在其它activities(如:設(shè)備創(chuàng)建/銷毀,屬性設(shè)置,進(jìn)程重啟)之間執(zhí)行這些命令序列。

每一個action格式如下:

on <trigger>

<command>

<command>

? ...

trigger是一個action觸發(fā)的條件,一共有如下幾種:

1、boot

發(fā)生在init啟動時,/init.conf被加載以后。

2、<name>=<value>

發(fā)生在名字為<name>的屬性的值被設(shè)置為<value>時。

3、device-added-<path>/device-removed-<path>

當(dāng)一個device node被添加/刪除時。

4、service-exited-<name>當(dāng)某個服務(wù)退出時。

?

command一共有如下幾種:

1、exec <path> [<argument>]*

fork并execute一個路徑<path>下面的程序,直到程序執(zhí)行完畢后,init才會繼續(xù)前進(jìn)。盡量避免使用這個command,它有可能導(dǎo)致init阻塞。其它c(diǎn)ommand不存在這個問題。

2、export <name> <value>

把全局環(huán)境變量<name>的值設(shè)置為<value>。這個命令執(zhí)行完畢以后啟動的所有進(jìn)程都會繼承這個全局變量。

3、ifup <interface>

Bring the network interface <interface> online.(打開某個網(wǎng)卡)

4、import <filename>

Parse an init config file, extending the current configuration.

5、hostname <name>

Set the host name.

6、class_start <serviceclass>

如果某一類service沒有運(yùn)行,啟動它們。

7、class_stop <serviceclass>

如果某一類service正在運(yùn)行,停止它們。

8、domainname <name>

Set the domain name.

9、insmod <path>

安裝路徑<path>指定的模塊。

10、mkdir <path>

創(chuàng)建<path>代表的文件夾,只能一層層地創(chuàng)建。

11、mount <type> <device> <dir> [ <mountoption> ]*

把<device>掛載到系統(tǒng)類型為<type>的文件系統(tǒng)的<dir>目錄下。<device>可能有mtd@name的形式,代表名字為name的mtd塊設(shè)備。

12、setkey

未定義

13、setprop <name> <value>

設(shè)置系統(tǒng)屬性。

14、setrlimit <resource> <cur> <max>

Set the rlimit for a resource.

15、start <service>

如果服務(wù)沒有運(yùn)行,啟動它。

16、stop <service>

如果服務(wù)正在運(yùn)行,停止它。

17、symlink <target> <path>

把<target>鏈接到目錄<path>下。

18、write <path> <string> [ <string> ]*

打開<path>所指的文件,并把<string>寫入。

關(guān)于3、5、8,參見init.rc里面的

on boot

# basic network init

?? ?ifup lo

?? ?hostname localhost

?? ?domainname localdomain

關(guān)于14,參見init.rc里面的

# set RLIMIT_NICE to allow priorities from 19 to -20

?? ?setrlimit 13 40 40

?

?

說完了action下來我們來說說service

?

services 是一些由init 啟動 和 重新(如果有需要)啟動的程序,當(dāng)然這些程序如果是存在的。

每一個service格式如下:

service <name> <pathname> [ <argument> ]*

<option>

<option>

? ...

例如:

1

?service ppp /system/bin/pppd call gprs
???? user root
???? group system radio
???? disabled
???? oneshot

2

service mtpd /system/bin/mtpd
??? socket mtpd stream 600 system system
??? user vpn
??? group vpn net_admin net_raw
??? disabled
??? oneshot

options 是service的修飾符,用來告訴init 怎樣及何時啟動service。一共有如下幾種:

1、disableds

這個服務(wù)不能通過啟動一類服務(wù)來啟動,只能單獨(dú)以名字來啟動。

?

2、socket <type> <name> <perm>? <user> <group>?

創(chuàng)建一個名字為/dev/socket/<name>的unix domain socket,并把它的fd傳遞給 加載的進(jìn)程。<type>的值是dgram或stream.

?

注意:在init.rc中使用socket時,<type>是放在<name>之后的。

init程序在運(yùn)行過程中可能會設(shè)置幾個特殊屬性的值,來告訴其它程序它正在做什么。這些屬性是:

(1)、init.action

當(dāng)前正在執(zhí)行的action的名字,如果沒有,就是“”。

(2)、init.command

當(dāng)前正在執(zhí)行的command的名字,如果沒有,就是“”。

(3)、init.svc.<name>

一個服務(wù)的狀態(tài)。可能的值有:“stopped”,"running","restarting"

?

3、user <username>

在啟動服務(wù)之前,把用戶名切換到<username>。默認(rèn)是root

4、group <groupname> [ <groupname> ]*

在啟動服務(wù)之前,把組名切換到<groupname>。一個服務(wù)可能屬于多個組。

5、capability [ <capability> ]+

Set linux capability before exec'ing this service

6、oneshot

服務(wù)之運(yùn)行一次,退出后不再重啟。

7、class <name>

為服務(wù)設(shè)定一個類別,一個類別是中的服務(wù)可以同時啟動或停止。如果沒有這個屬性,服務(wù)的默認(rèn)類別是“default”

默認(rèn)情況下,通過init啟動的程序都會把stdout和stderr定向到/dev/null。有時為了調(diào)試方便,可以通過Android的logwrapper程序啟動某個程序。這樣,被啟動程序stdout和stderr就被定向到了Android的LOG系統(tǒng)中,可以通過logcat來查看了。

例如:

service akmd /system/bin/logwraper /sbin/akmd

轉(zhuǎn)載:CSDN? 網(wǎng)友?http://blog.csdn.net/a345017062/archive/2011/03/11/6239204.aspx,這篇博客,自己進(jìn)行了部分修改,對于Android的軟件研發(fā)人員,很有必要研究一下。?

總結(jié)

以上是生活随笔為你收集整理的Android 的 init.rc 文件简介【转】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。