init.rc语法详解

init.rc脚本的4种类型

  • Action(动作)
  • Commands(命令)
  • Services(服务)
  • Options(选项)

Action

格式:
on < trigger > ##触发条件
< command1 > ## 执行命令
< command2 > ##可以执行多个命令
< command3 >

比如系统源码中的:
on property:sys.boot_from_charger_mode=1
class_stop charger
trigger late-init

当相应的事件发生时,系统会对init.rc中的各进行匹配,只要发现符合条件的Action,就会把它加入”命令执行队列”的尾部,(除非这个Action在队列中已经存在)。然后系统在对这些命令按顺序执行。

Commands

trigger

TriggerDescription
bott这是init程序启动后出发的第一个事件
< name > = < value >当属性< name >满足特定< value >时触发
device-added-< path>当设备节点添加/删除时触发此事件
service-exited-< name >当指定的服务< name >存在时触发

Commands

CommandDescription
exec < path > [< argument >]*Fork并执行一个程序,其路径为< path >,这条命令将阻塞直到该程序启动完成,因此他有可能造成init程序在某个点不停的等待。
export < name >< value >设置某个环境变量< name >的值为< value >,这是对全局有效的,即其后的所有进程都将继承这个变量。
ifup < interface >使网络接口< interface >成功连接。
import < filename >解析另外一个配置文件,名为< filename >,以扩展当前配置。
hostname < name >设置主机名为< name >
chdir < directory >更改工作目录为< directory >
chmod < octal-modc >更改文件访问权限
chown < owner >< group >< path >更改文件所有者和组群
chroot < directory >更改根目录位置
class_start < serviceclass >启动由< servicesclass >类名指定的所有相关服务,如果他们不存在运行状态的话
class_stop < serviceclass >停止所有由< serviceclass >指定的服务,如果他们当前正在运行的话
domainname < name >设置域名
insmod < path >在< path >路径上安装一个模块
mkdir < path >[mode][owner][group]在< path >上新建一个目录
mount < type >< device >< dir >[mountoption]尝试在指定路径上挂载一个设备
setkey目前没有定义
setprop< name >< value >设置系统属性< name >的值< value >
start < service >这个命令将启动一个服务,如果他没有处于运行状态的话
stop < service >这个命令将启动一个服务,如果他没有处于运行状态的话
symlink < target >< path >创建一个< path >路径的连接,目标为< target >
sysclktz 设置基准时间,如果当前时间是GMT,这个值为0
trigger < event >触发一个事件
write < path >< string >[ < string >]*打开一个文件,并写入一个或多个字符串

Services

在特定选项的约束下呗init程序运行或者重启.
格式:
service < name >< pathname > [ < argument >]*
< option >
< option >

参数解释:
- name 表示此service的名称
- pathname 此service所在路径。
- argument 启动service所带的参数
- option 对此service的约束选项。

options

Services中的可用选项:

optionDescription
critical表明这个对设备至关重要的服务,如果他在四分钟内退出超过4次,则设备将重启进入恢复模式
disable此服务不会自动启动,而是需要通过显示调用服务名来启动
setenv < name >< value >设置环境变量< name >为某个值< value >
socket < name >< type >< perm >[< user >[ < group >]]创建一个名为/dev/socket/< name >的Unix domain socket,然后将他的fd值传给启动它的进程,有效的< type >值包括dgram,steam和seqpacket.而user和group的默认值是0
user < username >在启动服务前将用户切换至< username >,默认情况下用户都是root
group < groupname >[< groupname >]在启动服务将用户组切换至< groupname >
oneshot当此服务退出时,不要主动去重启他
class < name >为该服务指定一个class名,同一个class的所有服务必须同时自动或者停止,默认情况下服务的class名是”default”
onrestart当此服务重启时,执行某些命令
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值