android init.rc语法
转自:http://www.cnblogs.com/nokiaguy/p/3164799.html
init.rc由如下4部分组成。
动作(Actions)
命令(Commands)
3. 服务(Services)
选项(Options)
这4部分都是面向行的代码,也就是说用回车换行符作为每一条语句的分隔符。而每一行的代码由多个符号(Tokens)表示。可以使用反斜杠转义符在 Token中插入空格。双引号可以将多个由空格分隔的Tokens合成一个Tokens。如果一行写不下,可以在行尾加上反斜杠,来连接下一行。也就是 说,可以用反斜杠将多行代码连接成一行代码。
AIL的注释与很多Shell脚本一行,以#开头。
AIL在编写时需要分成多个部分(Section),而每一部分的开头需要指定Actions或Services。也就是说,每一个Actions或 Services确定一个Section。而所有的Commands和Options只能属于最近定义的Section。如果Commands和 Options在第一个Section之前被定义,它们将被忽略。
Actions和Services的名称必须唯一。如果有两个或多个Action或Service拥有同样的名称,那么init在执行它们时将抛出错误,并忽略这些Action和Service。
下面来看看Actions、Services、Commands和Options分别应如何设置。
Actions的语法格式如下:
on
也就是说Actions是以关键字on开头的,然后跟一个触发器,接下来是若干命令。例如,下面就是一个标准的Action。
on boot
ifup lo
hostname localhost
domainname localdomain
其中boot是触发器,下面三行是command
那么init.rc到底支持哪些触发器呢?目前init.rc支持如下5类触发器。
- boot
这是init执行后第一个被触发Trigger,也就是在 /init.rc被装载之后执行该Trigger
- =
当属性被设置成时被触发。例如,
on property:vold.decrypt=trigger_reset_main
class_reset main
device-added-
当设备节点被添加时触发
device-removed-
当设备节点被移除时添加
service-exited-
会在一个特定的服务退出时触发
Actions后需要跟若干个命令,这些命令如下:
- exec [ ]*
创建和执行一个程序()。在程序完全执行前,init将会阻塞。由于它不是内置命令,应尽量避免使用exec ,它可能会引起init执行超时。
2. export <name> <value>
在全局环境中将 变量的值设为。(这将会被所有在这命令之后运行的进程所继承)
- ifup
启动网络接口
- import
指定要解析的其他配置文件。常被用于当前配置文件的扩展
- hostname
设置主机名
- chdir
改变工作目录
- chmod
改变文件的访问权限
- chown
更改文件的所有者和组
- chroot
改变处理根目录
- class_start
启动所有指定服务类下的未运行服务。
11 class_stop
停止指定服务类下的所有已运行的服务。
- domainname
设置域名
- insmod
加载指定的驱动模块
- mkdir [mode][owner] [group]
创建一个目录 ,可以选择性地指定mode、owner以及group。如果没有指定,默认的权限为755,并属于root用户和 root组。
- mount [ ]*
试图在目录
挂载指定的设备。 可以是mtd@name的形式指定一个mtd块设备。包括 "ro"、"rw"、"re
- setkey
保留,暂时未用
- setprop
将系统属性的值设为。
- setrlimit
设置的rlimit (资源限制)
- start
启动指定服务(如果此服务还未运行)。
20.stop
停止指定服务(如果此服务在运行中)。
- symlink
创建一个指向的软连接。
- sysclktz <mins_west_of_gmt>
设置系统时钟基准(0代表时钟滴答以格林威治平均时(GMT)为准)
- trigger
触发一个事件。用于Action排队
- wait [ ]
等待一个文件是否存在,当文件存在时立即返回,或到指定的超时时间后返回,如果不指定,默认超时时间是5秒。
- write [ ]*
向指定的文件写入一个或多个字符串。
Services (服务)是一个程序,他在初始化时启动,并在退出时重启(可选)。Services (服务)的形式如下:
service <name> <pathname> [ <argument> ]*
<option>
<option>
例如,下面是一个标准的Service用法
复制代码
service servicemanager /system/bin/servicemanager
class core
user system
group system
critical
onrestart restart zygote
onrestart restart media
onrestart restart surfaceflinger
onrestart restart drm
复制代码
Services的选项是服务的修饰符,可以影响服务如何以及怎样运行。服务支持的选项如下:
- critical
表明这是一个非常重要的服务。如果该服务4分钟内退出大于4次,系统将会重启并进入 Recovery (恢复)模式。
- disabled
表明这个服务不会同与他同trigger (触发器)下的服务自动启动。该服务必须被明确的按名启动。
- setenv
在进程启动时将环境变量设置为。
- socket [ [ ] ]
Create a unix domain socketnamed /dev/socket/ and pass
its fd to the launchedprocess. must be"dgram", "stream" or "seqpacket".
User and group default to0.
创建一个unix域的名为/dev/socket/ 的套接字,并传递它的文件描述符给已启动的进程。 必须是 "dgram","stream" 或"seqpacket"。用户和组默认是0。
- user
在启动这个服务前改变该服务的用户名。此时默认为 root。
- group [ ]*
在启动这个服务前改变该服务的组名。除了(必需的)第一个组名,附加的组名通常被用于设置进程的补充组(通过setgroups函数),档案默认是root。
- oneshot
服务退出时不重启。
- class
指定一个服务类。所有同一类的服务可以同时启动和停止。如果不通过class选项指定一个类,则默认为"default"类服务。
onrestart
当服务重启,执行一个命令
android init.rc语法的更多相关文章
- Android init.rc解析【转】
转自:http://www.linuxidc.com/Linux/2014-10/108438.htm 本文主要来自$Android_SOURCE/system/init/readme.txt的翻译. ...
- Android init.rc文件浅析
Android init.rc文件浅析 分类: Android2012-04-13 18:00 13149人阅读 评论(2) 收藏 举报 androidservicepathactionsocketc ...
- Android init.rc文件格式解析
/***************************************************************************** * Android init.rc文件格式 ...
- init进程 && 解析Android启动脚本init.rc && 修改它使不启动android && init.rc中启动一个sh文件
Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径:system/core/init,编译 ...
- android init.rc 语法分析
此文来自于对http://source.android.com/porting/index.html中bring up段的简译.其中有一处与源码的 system/core/init/readme.tx ...
- android init.rc命令快速对照表
注1:另外还讲述了怎样输出log: Debugging notes---------------By default, programs executed by init will drop stdo ...
- MTK(android init.rc) 写一个开机启动的服务
在开机往往我们想要做一些初始化的操作,这时候可以使用init.rc文件来实现,当然书写一个开机启动的服务也需要规范的. 假设是C程序,则需要准备C程序的源码,在我的例程中是一个在开机完成(androi ...
- Android init.rc执行顺序
转自:http://blog.csdn.net/kickxxx/article/details/7590665 1. 所有的action运行于service之前 2. 下面为各个section的执行 ...
- init.rc语法介绍
1.init.rc是一个可配置的初始化文件,通常定制厂商可以配置额外的初始化配置,init.%PRODUCT%.rc 2.init.rc是在$GINGERBREAD/system/core/init/ ...
随机推荐
- Codeforces Round #669 (Div. 2)/Codeforces1407 ABCD
A. Ahahahahahahahaha 通过作者半个小时的观察:全零和全一必定有一个是符合要求的答案,因为0的个数和1的个数至少有一个大于等于\(\frac{n}{2}\). B. Big Vova ...
- JVM 中的对象及引用
JVM中对象的创建过程 对象的内存分配 虚拟机遇到一条 new 指令时,首先检查是否被类加载器加载,如果没有,那必须先执行相应的类加载过程. 类加载就是把 class 加载到 JVM 的运行时数据区的 ...
- [PyTorch 学习笔记] 6.2 Normalization
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson6/bn_and_initialize.py https: ...
- jenkins打包java maven项目
一.maven本地配置 1.修改apache-maven-3.6.1\conf\settings.xml文件,把仓库配置成本地仓库 <localRepository>D:\apache-m ...
- 在Apache服务器上安装SSL证书
参考:链接 前提条件 1.您的Apache服务器上已经开启了443端口(HTTPS服务的默认端口) // 开通443端口 firewall-cmd --zone=public --add-port=4 ...
- centos7安装PHP7的redis扩展
前言: 在本篇博客中,我将给大家介绍如何在Centos7上安装PHP-Redis扩展,关于如何在Centos上安装redis的,可以参考另外一篇博客:Centos7安装redis 想要在php中操作r ...
- [Java并发编程之美]第1章 线程基础 补充知识
1.2线程创建与运行 创建线程有三种方式: 继承Thread类并重写run方法: 实现Runnable接口的run方法,new Thread时将该类对象作为参数传入: 实现Callable接口的cal ...
- JVM垃圾回收安全点Safe Point
GC安全点(Safepoint) 程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为“安全点(Safepoint) ” Safe Point的选择很重要, ...
- Mybatis接口Mapper内的方法为啥不能重载吗?
动态代理的功能:通过拦截器方法回调,对目标target方法进行增强. 言外之意就是为了增强目标target方法.上面这句话没错,但也不要认为它就是真理,殊不知,动态代理还有投鞭断流的霸权,连目标tar ...
- kubernetes部署Percona XtraDB Cluster集群
PXC介绍 全称percona-xtradb-cluster,提供了MySQL高可用的一种实现方法.PXC集群以节点组成(推荐至少3节点,便于故障恢复),每个节点都是基于常规的 MySQL Serve ...