init.rc语法

来源:互联网 发布:淘宝管控记录怎么销 编辑:程序博客网 时间:2024/05/29 13:22

概述

一个完整的init.rc脚本是由四种类型组成的。即:

  • Action
  • Commands
  • Services
  • Options

Action

格式

格式如下:
on < Trigger > ## 触发条件
< Command1>
< Command2>

一旦 Trigger被触发,就会执行Command1,Command2.(且Trigger的名字是唯一的,重复则会报错)

init.rc常见的触发器(Trigger)

  • boot #这是init程序启动后触发的第一个条件
  • < Name> = < Value> # 当某个属性的值为Value时
  • device -added < path> # 当某个设备节点被添加
  • device -removed < path> # 当某个设备节点被移除
  • service -exited < name> # 当名字为name的服务存在时,触发

init.rc常见的命令

  • export < name> < value> # 设置环境变量,作用于全局
  • mkdir < path> [mode] [ owner] [group]
  • mount < type> < device> < dir> [< mountOption>] 尝试在制定路径下挂载一个设备
  • write < path> < value> 打开文件,并写入值

Services (服务)

Services 其实是可执行程序,它们在特定选项约束下会被init程序运行或者重启。

格式一般如下:

service < name> < pathName> [< arguments>]    < options>name: service 的名称pathName:service所在路径argument:启动service option:对service的约束条件。

常见的option

* critical 至关重要的服务*  disabled,此服务不会自动启动,需要显式调用*  setenv< name> < value> 设置环境变量name为value值 *  socket < name> < type> < perm> [< user> < group>] 创建一个名为name的unix domain socket, type表示类型:dgram,stream 或者 seqpacket*  user< username>*  group< groupname>*  oneshot 当服务退出后,不要去重启它 *  class < name> 为服务指定class名,同一个class的服务需要同时启动或停止 *  onrestart 当服务重启时,执行某些命令

总结

对于action来说,它是当trigger发生时执行某些命令;而对于service来说,它是总是发生的,然后去执行pathName下的可执行文件

分析init.rc 文件

on boot ## boot事件    export PATH  /sbin:/system/sbin:/system/bin ##设置系统的全局环境变量    export LD_LIBRARY_PATH /system/lib # 相应boot事件,设置库的路径    mkdir /dev    mkdir /proc # 分别创建dev目录、proc目录    mkdir /system    mount tmpfs tmpfs /dev    mkdir /dev/pts    mkdir /dev/socket    mount devpts devpts /dev/pts    mount proc proc /proc    mount sysfs sysfs /sys    write /proc/cpu/alignment 4 #打开文件并写入值    ifup lo #建立lo网络连接    ......service adbd /sbin/adbd # 启动adbd进程    user adbd    group adbdService .....service zygote /system/bin/app_process -Xzygote /system/bin --zygotesocket zygote 666 # 启动zygote服务。on device-added- /dev/compass    start akmdon device-removed-/dev/compass    stop akmd # 当移除dev/compass节点后,停止akmdservice akmd /sbin/akmd     disabled #只能显示调用起来    user akmd    group akmd #    
原创粉丝点击