Provided by: manpages-zh_1.5.1-1_all bug

NAME

       init, telinit - 進程處理初始化

`覽
       /sbin/init [ -a ] [ -s ] [ -b ] [ -z xxx ] [ 0123456Ss ]
       /sbin/telinit [ -t ] [ 0123456sSQqabcUu ]

yz
   Init
       Init    是所有進程的父進程。它的槃任務是從一茼s儲在檔案    /etc/inittab
       (參 inittab(5))   裏悸瑤Z本裏創建進程。   這蚗仵袕q常有一些令   init
       在每條使用者可登入的線上派生 getty 的記錄. 它同時也控制著各獨特系統所-
       n求的獨立進程。

BO
       所謂                 BO                  是一種系統軟體環境配置,
       在此特定的環境中只允閉Y一組選定的進程存在。                        init
       給不同的運行級別派生的進程在     /etc/inittab     檔案中定義。     Init
       可以啟動到8茪ㄕP的運行級別上:         0-6Ss。運行級別可以由超級使用者通過                                 telinit
       命令來轉換,此命令可以將轉換信號傳遞給 init, 告訴它切換到蚢B行級別。

       運行級別    01,和    6    為系統保留的專用運行級別。    運行級別   0
       用來關機,運行級別       6       用來垮珗q腦,        運行級別        1
       用來使電腦進入單使用者模式。     運行級別    S    不是給我怐蔣筐洏峈滿A
       更多是為進入運行級別          1          時運行某些可執行稿本時被調用。
       如果想得到更多相關的信息,請參黎漭U shutdown(8) 和 inittab(5)。

       運行級別      7-9     雖然在文件中說明,但也可以使用。     不使用它怐-
       鴞]只是因為"傳統"  Unix   變種不使用這些運行級別。   另外,運行級別   S
       和運行級別     s     實際上是相同的,    它怚u是系統內同一運行級別的兩-
       茪ㄕP的別名而己。

t導
       當系統核心引導到最後一步時,     init     進程被啟動,     它會自動查找
       /etc/inittab             檔案,看看是否有類型為             initdefault
       (參 inittab(5))的記錄.    initdefault    記錄決定系統初始運行級別。
       如果沒有這條記錄(或者根本就沒有            /etc/inittab           ),
       那麼,你必須在系統控制台輸入想n進入的運行級別。

       運行級別 Ss  把系統帶入單使用者模式,  此模式不需n  /etc/initttab
       檔案。單使用者模式中, /sbin/sulogin 會在  /dev/console 這茬]備上打開。

       當進入單使用者模式後,  init  會從檔案  /etc/ioctl.save  中讀取控制台的
       ioctl(2)   狀態。如果該檔案不存在,   init   則把線路設定為  9600  baud
       並且帶有 CLOCAL。  當  init  退出單使用者模式時,  它會自當前的控制台的
       ioctl 設置存儲到這蚗仵蚳悀U次使用。

       當第一次進入多使用者模式時,init       會執行bootbootwait
       記錄以便在使用者可以登入之前掛載檔案系統。
       然後再執行相應運指定的各進程。

       當啟動一虓s的進程時,   init   會檢查是否存在   /etc/initscript  檔案。
       如果存在該檔案,則使用該稿本來啟動該進程。

       如果系統中存在檔案   /var/run/utmp/var/log/wtmp,    那麼當每-
       茪l進程終止時,init 會將終止信息和鴞]記錄進這兩蚗仵蚺丑C

BO
       當                    init                   啟動了所有指定的子進程後,
       它會不斷地偵測系統進程情況,如:它的某茪l進程被終止、電源失效、或由
       telinit      發出的改變運行級別的信號。當它接受到以上的這些信號之一時,
       它會自動奐s掃描           /etc/inittab           檔案,並執行相應操作。
       所以,新的記錄可以隨時加入到此檔案中。            並且,           init
       仍然等待系統發出了上z信號。
       在更新了各種系統檔案後,如果你希望得到即時的更新,  你可以使用telinit Qq 命令來喚醒 init 讓它即刻奐s檢測/etc/inittab  檔案。

       如果   init   不是在單使用者模式並且接收到了一蚢q源失效信號(SIGPWR),
       它會讀取檔案 /etc/powerstatus,並執行該檔案中指定的各種操作:

       F(AIL) 電源失效,由 UPS 提供電力。執行 powerwaitpowerfail 記錄。

       O(K)   電源恢復,執行 powerokwait 記錄。

       L(OW)  電源失效並且 UPS 電壓也太低。執行 powerfailnow 記錄。

       如果檔案   /etc/powrestatus  不存在或其中的內容並不包含有以上所示的字母
       FOL ,則 init 會當做讀到了字母 F。

       我怳g成使用  SIGPWR/etc/powerstatus  。  有些使用者希望與  init
       進行交互,那麼可以使用       /dev/initctl       控制通道。關於此點的描-
       z請參 sysvinit 包的鴝l碼。

       當                    init                     得到更新運行級別的請求,
       init會向所有沒有在新運行級別中定義的進程發送一蚅筆i信號    SIGTERM   。
       在等待  5  秒鐘之後,它會發出強制中斷所有進程的運行的信號  SIGKILL   。
       注意,     init     假設所有的這些進程(包括它怐澈嵽N)都仍然在    init
       最初創建它怐漲P一進程組裏。                     如果有任何進程改變了它-
       怐熄i程組,那麼它就收不到這些信號。                   這樣的進程,你需-
       n分別進行手動的終止。

TELINIT

       /sbin/telinit  是一茖  /sbin/init  的軟鏈接。  它用一茬璁r符參數來通知
       init 執行相應的操作。 下惇O相關的參數:

       0,1,2,3,4,56
              通知 init 將運行級別切換到指定的運行級別

       a,b,c  告訴  init  只運行那些  /etc/inittab 檔案中 運行級別是 abc
              的記錄

       Qq 通知 init 奐s檢測 /etc/inittab 檔案

       Ss 通知 init 將運行級別切換到單使用者模式下

       Uu 通知  init  自動垮牷]保留狀態),   此操作不會對檔案/etc/inittab
              進行奐s檢測。       執行此操作時,運行級別必須處在       Ss12345
              之一,否則,該請求將被忽略

       telinit 還可以告訴 init 兩次發送 SIGTERM  和  SIGKILL  信號的時間間隔。
       預設O 5 秒,你可以通過使用 -t sec 的選項來蚹鵅C

       telinit 只能由具有恰當權的使用者執行。

       init  通過檢查自己的  i{ 來判斷自己是 init 還是 telinit ;真的 init
       的進程號永遠都是  1。  從這一點來看,我怞b調用  telinit  時也可以只使用
       init 來少敲幾蚆銦D

q
       Init 為所有的子進程設定下列環境變量

       PATH   /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin

       INIT_VERSION
              如名字表示的那樣.在決定一蚑Z本是否直接來自 init 時很有用

       RUNLEVEL
              當前系統的運行級別

       PREVLEVEL
              前次運行的運行級別(僅當改變運行級別時有用)

       CONSOLE
              系統控制台。此變量是由核心繼承而來,如果沒有此環境變量的定義,
              init 會使用 /dev/console 做為預設的控制台

x
       在啟動系統時可以通過引導管理器(比如,LILO)傳遞一些啟動標誌給 initInit 接受下探X荂G

       -sSsingle
            以單使用者模式啟動系統。按這種模式啟動時,     /etc/inittab    需-
            n被檢查, 並在單使用者模式 shell 啟動之前會執行引導 rc 稿本。

       1-5  定義需n啟動的運行級別

       -b, emergency
            不運行任何啟動稿本而直接進入單使用者模式 shell

       -a, auto
            如果用預設命令行從核心引導(沒有使用者幹預),                LILO
            引導管理器向命令行增加了單詞   如果是這樣的話,   init  把環境變量
            請注意你不能將這茠F西用於任何安全評測  -  使用者當然可以在命令行上
            手動輸入

       -z xxx
            -z                     參數被忽略.你可以用這蚇龠結仄L擴展命令行,
            這樣它可以在堆棧裏獲得更多空間.然後 Init 就可以操作命令行,  好讓
            ps(1) 顯示當前運行級別.

f
       init監聽   /dev  裏的一  fifo/dev/initctl,從中獲取信息。  Telinit
       也使用這些和  init   進行通信。   該界惆S有完整的文件。   如果對   init
       有興趣,則可以學習 src/ 目錄中 init 源檔案包中的 initreq.h 檔案。

H號
       init 對以下信號產生響應

       SIGHUP
            當接收到該信號後,init會對  /etc/initrunlvl/var/log/inirunlvl
            檔案進行檢查。如果這兩蚗仵蚺坐@存在而且檔案中有              ASCII
            字符的運行級別, init 會轉換到相應的新的運行級別。
             SuVe!   .  通常的情況是該檔案並不存在,所以 init
            執行類似於
             telinit q 這樣的操作。

       SIGUSR1
            當接收到這茷H號量,init                    會關閉並奐s打開它的控制
            fifo,/dev/initctl。 此操作對 /dev 被奐s掛載後的啟動稿本有用。

       SIGINT
            通常,當使用者按了  CTRL-ALT-DEL  鍵後,核心會向 init 傳遞此信號。
            它所執行的操作與 ctrlaltdel 相同。

       SIGWINCH
            當鍵盤有  KeyboardSignal  按鍵按下時,核心向   init   傳遞此信號,
            它激活 kbrequest 動作.

`
       Init    與    System    V   的   init   相相容。   它與/etc/init.d/etc/rc{runlevel}.d                      目錄下的稿本緊密地工作在一起。
       如果你的系統使用這種慣例,在    /etc/init.d    目錄下應該有一   README
       檔案,它可以很好地解釋了這些稿本是如何工作的。

案
       /etc/inittab
       /etc/initscript
       /dev/console
       /etc/ioctl.save
       /var/run/utmp
       /var/log/wtmp
       /dev/initctl

i
       Init 假設進程和進程的後代同屬於最初創建它怐熄i程組.  如果進程改變了它-
       怐熄i程組, init 就無法中止它怴A因此,你可能會有兩荈i程讀取一條終端線.

E
       如果   init    發現它的垮狾蜈b最近    2    分鐘裏超過了    10    次,
       它就會認為程式命令串出錯了。在系統控制台輸出出錯信息,並拒絕奐s啟動,
       只有等到  5  分鐘以後或使用者給  init  一荅S定的信號,  它才會奐s響應。
       這可以防止由於使用者在編輯     /etc/inittab    檔案時可能出現的輸入錯誤
       或由於相關程式被無意刪除後導P的大量佔用系統資源。

@者
       Miquel  van Smoorenburg (miquels@cistron.nl)  鴝l幫助手冊陽@者:Michael
       Haardt  (u31b3hs@pool.informatik.rwthaachen.de).

t見
       getty(1),  login(1),  sh(1),  who(1), shutdown(8), kill(1), inittab(5),
       initscript(5), utmp(5)

[]
       <solomen@email.com.cn>

[]
       2000/11/26

[Linux manUp]
       http://cmpp.linuxforum.net

                               11 February 2000                        INIT(8)