rc文件解释
service <name><pathname> [ <argument> ]*
<option>
<option>
参数 | 含义 |
---|---|
name | 表示此服务的名称 |
pathname | 此服务所在路径因为是可执行文件,所以一定有存储路径。 |
argument | 启动服务所带的参数 |
option | 对此服务的约束选项 |
critical :设备关键服务,在4分钟内,服务重启4次,设备则重启进入还原模式
disabled:服务不会自动运行,必须显式通过服务器启动
setenv:设置环境变量
user:在执行此服务之前切换用户名
group:类似于user,切换组名
oneshot:当此服务退出时不会自动重启
class:给服务指定一个类属,方便同类服务同时启动或停止
onrestart:当服务重启时执行一条指令
frameworks/native/cmds/servicemanager/servicemanager.rc
service servicemanager /system/bin/servicemanager
class core animation
user system
group system readproc
critical
onrestart restart healthd
onrestart restart zygote
onrestart restart audioserver
onrestart restart media
onrestart restart surfaceflinger
onrestart restart inputflinger
onrestart restart drm
onrestart restart cameraserver
onrestart restart keystore
onrestart restart gatekeeperd
writepid /dev/cpuset/system-background/tasks
shutdown critical
服务管理器,在这些服务死掉会立马重启这些服务。
动作
on <trigger> 触发条件
<command> 执行命令
格式 | 含义 |
---|---|
on early-init | 在初始化早期阶段触发 |
on init | 在初始化阶段触发 |
on late-init | 在初始化晚期阶段触发 |
on boot/charger | 当系统启动/充电时触发 |
on property | 当属性值满足条件时触发 |
servicemanager是通过init.rc on post-fs 启动
Action/Service | 描述 |
on early-init | 设置init进程以及它创建的子进程的优先级,设置init进程的安全环境 |
on init | 设置全局环境,为cpu accounting创建cgroup(资源控制)挂载点 |
on fs | 挂载mtd分区 |
on post-fs | 改变系统目录的访问权限 |
on post-fs-data | 改变/data目录以及它的子目录的访问权限 |
on boot | 基本网络的初始化,内存管理等等 |
service servicemanager | 启动系统管理器管理所有的本地服务,比如位置、音频、Shared preference等等… |
service zygote | 启动zygote作为应用进程 |