ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2011年1月3日 星期一

Android Init Language - init

Android source 的 system/core/init 有 readme,說明 init 的使用方法 (Android Init Language) 每個指令有四項選項:
  • Action
  • Command
  • Service
  • Options

Action 當 XX 事情發生時,依序執行下列的 command.. 這個 XX 事情稱為 " Trigger",有:
  • boot : init 開始執行
  • <name>=<value> : name == value 時
  • device-add-<path> / device-remove-<path> : 當 device add 或 remove 時。
  • service-exited-<name> : service 結束得時候。
Command
  • exec <path> [<argument>]* : fork and execute 'path'. init 會停止,等這個程式執行完畢
  • export <nam> <value> : set global environment variable
  • ifup <inteface>
  • import <filename> : 類似 include XXX
  • hostname <name> : 設定 hostname
  • chdir <directory> : change working directory
  • chmod <octal-mode> <path> : 變更 'path' 的權限
  • chown <owner> <group> <path>
  • chroot <directory> : change root directory
  • class_start <service classname > : 把同屬於 'class name' 的所有 service 啟動
  • class_stop <service classname >
  • domain <name>
  • insmod <path>
  • mkdir <path> [mode] [owner] [groupe] : create a new directory
  • mount <type> <device> <dir> [ <mount options>]*
  • setrop <name> <valu> : set system property
  • setrlimit <resource> <cir> <max> : 設定 resource 的使用值, max limit
  • start / stop <service> : 停止,啟動 service
  • symink <target> <path> : 就是 ln -s
  • sysclktz : set timezone
  • trigger <event> : Trigger Event
  • write <path> <string> [<string>]* : 開啟 file (path),寫入 string...
Service init 會叫起他門,並且依照 option ,當程式 exit 時,重新再叫起。 Options 用來決定 Service 的行為:
  • critical : 如果這個 service 在一分鐘內resart 4 次,把系統重新啟動,進入 recovery mode.
  • disabled : 不啟動
  • setenv <name> <value> : 啟動時,環境變數設好
  • socket <name> <type> <perm> [ <user> [<group>]] : create socket並且 pass 給啟動的程式
  • user >username> : 以 username 來執行
  • groupe <groupename> [<groupename>]* : 以 groupename 來執行
  • oneshoot : 執行一次就好,不用 restart
  • class <name> : 給定一個 classs name, 同屬一個 class 的所有 service 都要一起啟動,一起停止。
  • onrestart : 這個 service reatart 時,同時執行下列 command..

init 還會 upate 以下的 system property:
  • init.action : 目前的 action
  • init.command : 目前的 command
  • init.svc.<name> : 目前 'service' 的狀態。

所以要執行自己的 command 大概要用 exec ..

沒有留言:

標籤

網誌存檔