zoukankan      html  css  js  c++  java
  • init.rc语法介绍

    1、init.rc是一个可配置的初始化文件,通常定制厂商可以配置额外的初始化配置,init.%PRODUCT%.rc

    2、init.rc是在$GINGERBREAD/system/core/init/init.c中读取的,它基于“行”,包含一些用空格隔开的关键字(它属于特殊字符)

    3、如果关键字中有空格,处理方法类似于C语言,使用/表示转义,使用“”防止关键字被断开,另外注意/在末尾表示换行

    4、#开头的表示注释

    5、init.rc包含4种状态类别:Actions/Commands/Services/Options

    6、当声明一个service或者action的时候,它将隐式声明一个section,它之后跟随的command或者option都将属于这个section

    7、action和service不能重名,否则忽略为error

    8、actions就是在某种条件下触发一系列的命令,通常有一个trigger,形式如:

    on <trigger>
         <command>
         <command>

    9、service结构如下:
    service <name> <pathname> [ <argument> ]*
         <option>
         <option>

    10、option是service的修饰词,主要包括:
       critical  
       表示如果服务在4分钟内存在多于4次,则系统重启到recovery mode

       disabled  
       表示服务不会自动启动,需要手动调用名字启动

       setEnv <name> <value>  
       设置启动环境变量

       socket <name> <type> <permission> [<user> [<group>]] 
       开启一个unix域的socket,名字为/dev/socket/<name> , <type>只能是dgram或者stream,<user>和<group>默认为0

       user <username> 
       表示将用户切换为<username>,用户名已经定义好了,只能是system/root

       group <groupname> 
       表示将组切换为<groupname>

       oneshot 
       表示这个service只启动一次

       class <name> 
       指定一个要启动的类,这个类中如果有多个service,将会被同时启动。默认的class将会是“default”

       onrestart 
       在重启时执行一条命令

    11、trigger主要包括:
       boot 
       当/init.conf加载完毕时

       <name>=<value> 
       当<name>被设置为<value>时

       device-added-<path> 
       设备<path>被添加时

       device-removed-<path> 
       设备<path>被移除时

       service-exited-<name> 
       服务<name>退出时

    12、命令主要包括:
       exec <path> [ <argument> ]*
       执行一个<path>指定的程序

       export <name> <value>
       设置一个全局变量

       ifup <interface>
       使网络接口<interface>连接

       import <filename>
       引入其他的配置文件

       hostname <name>
       设置主机名

       chdir <directory>
       切换工作目录

       chmod <octal-mode> <path>
       设置访问权限

       chown <owner> <group> <path>
       设置用户和组
     
       chroot <directory>
       设置根目录

       class_start <serviceclass>
       启动类中的service

       class_stop <serviceclass>
       停止类中的service

       domainname <name>
       设置域名

       insmod <path>
       安装模块

       mkdir <path> [mode] [owner] [group]
       创建一个目录,并可以指定权限,用户和组

       mount <type> <device> <dir> [ <mountoption> ]*
       加载指定设备到目录下
       <mountoption> 包括"ro", "rw", "remount", "noatime"

       setprop <name> <value>
       设置系统属性

       setrlimit <resource> <cur> <max>
       设置资源访问权限

       start <service>
       开启服务

       stop <service>
       停止服务

       symlink <target> <path>
       创建一个动态链接

       sysclktz <mins_west_of_gmt>
       设置系统时钟

       trigger <event>
       触发事件

       write <path> <string> [ <string> ]*
       向<path>路径的文件写入多个<string>

  • 相关阅读:
    hitachi2020 C-ThREE
    LOJ#2083. 「NOI2016」优秀的拆分
    BZOJ2754: [SCOI2012]喵星球上的点名
    BZOJ4516: [Sdoi2016]生成魔咒
    AtCoder Beginner Contest 146解题报告
    拉格朗日插值复习笔记
    对于求解单峰函数最值问题的探讨
    BZOJ5509: [Tjoi2019]甲苯先生的滚榜
    面试技巧
    性能案例分析 | MAT分析内存泄露
  • 原文地址:https://www.cnblogs.com/senior-engineer/p/4848872.html
Copyright © 2011-2022 走看看