RedHat linux inittab詳解

來源:互聯網
上載者:User

 一、什麼是init

   init是Linux系統操作中不可缺少的程式之一。 是一個由核心啟動的使用者級進程。

    核心啟動(已經被載入記憶體,開始運行,並已初始化所有的裝置驅動程式和資料結構等)之後,就通過啟動一個使用者級程式init的方式來啟動其他使用者級的進程或服務。所以,init始終是第一個進程(其PID始終為1)。

    核心會在過去曾使用過init的幾個地方尋找它,它的正確位置(對Linux系統來說)是/sbin/init.如果核心找不到init,它就會試著運行/bin/sh,如果運行失敗,系統的啟動也會失敗。

    二、運行層級

  運行級就是作業系統當前正在啟動並執行功能層級。這個層級從1到6,具有不同的功能。其功能層級如下:# 0 - 停機(千萬不能把initdefault 設定為0 )

    # 1 - 單一使用者模式# 2 - 多使用者,沒有 NFS # 3 - 完全多使用者模式(標準的運行級)

    # 4 - 沒有用到# 5 - X11 (xwindow)

    # 6 - 重新啟動 (千萬不要把initdefault 設定為6——把被你黑掉的linux的initdefault設定為0或6也算是拒絕服務的攻擊噢!)

    除此之外還有ABC三個運行層級,但在RHLinux中都沒有意義。

    這些層級在/etc/inittab 檔案裡指定。這個檔案是init 程式尋找的主要檔案,最先啟動並執行服務是放在/etc/rc.d 目錄下的檔案。在大多數的Linux 發行版本中,啟動指令碼都是位於 /etc/rc.d/init.d中的。這些指令碼被用ln 命令串連到 /etc/rc.d/rcn.d 目錄。(這裡的n 就是運行級0-6)

    三、運行層級的配置

  運行層級的配置是在/etc/inittab行內進行的,如下所示:12 : 2 : wait : / etc / init.d / rc 2各欄位解釋如下:id:runlevels:action:process id:是一個任意指定的四個字元以內的序列標號,在本檔案內必須唯一;使用老版本的libc5(低於5.2.18)或a.out庫編譯出來的sysvinit限制為2字元。注意:像getty之類的登陸進程必須使id欄位與tty編號一致,如tty1需要id=1,許多老版本的登陸進程都遵循這種規則。

    runlevels:表示這一行適用於運行那個/些層級(這裡是2,可以有多個,表示在相應的運行級均需要運行);另外sysinit、boot、bootwait這三個進程會忽略這個設定值。

    action:表示進入對應的runlevels時,init應該運行process欄位的命令的方式,常用的欄位值及解釋在附錄內。例子中的wait表示需要運行這個進程一次並等待其結束。

    process:具體應該執行的命令。例子中的/etc/init.d/rc命令啟動運行層級2中應該啟動並執行進程/命令,並負責在退出運行級時將其終止(當然在進入的runlevel中仍要啟動並執行程式除外。)

    當運行層級改變,並且正在啟動並執行程式並沒有在新的運行層級中指定需要運行,那麼init會先發送一個SIGTERM 訊號終止,然後是SIGKILL.

    有效action值如下:respawn:表示init應該監視這個進程,即使其結束後也應該被重新啟動。

    wait:   init應該運行這個進程一次,並等待其結束後再進行下一步操作。

    once:   init需要運行這個進程一次。

    boot:   隨系統啟動運行,所以runlevel值對其無效。

    bootwait:隨系統啟動運行,並且init應該等待其結束。

    off:     沒有任何意義。

    initdefault:系統啟動後的預設運行層級;由於進入相應的運行層級會啟用對應層級的進程,所以對其指定process欄位沒有任何意義。如果inittab檔案內不存在這一條記錄,系統啟動時在控制台上詢問進入的運行級。

    sysinit:  系統啟動時準備啟動並執行命令。比如說,這個命令將清除/tmp.可以查看/etc/rc.d/rc.sysinit指令碼瞭解其運行了那些操作。

    powerwait:允許init在電源被切斷時,關閉系統。當然前提是有U P S和監視U P S並通知init電源已被切斷的軟體。RH linux預設沒有列出該選項。

    powerfail:  同powerwait,但init不會等待正在啟動並執行進程結束。RH linux預設沒有列出該選項。

    powerokwait:當電源監視軟體報告“電源恢複”時,init要執行的操作。

    powerfailnow:檢測到ups電源即將耗盡時,init要執行的操作,和powerwait/powerfail不同的喲。

    ctrlaltdel:允許init在使用者於控制台鍵盤上按下C t r l + A l t + D e l按鍵組合時,重新啟動系統。注意,如果該系統放在一個公用場所,系統管理員可將C t r l + A l t + D e l按鍵組合配置為別的行為,比如忽略等。我是設定成列印一句罵人的話了^o^. kbrequest:監視到特定的鍵盤按鍵組合被按下時採取的動作,現在還不完善。

    ondemand:A process marked with an ondemand runlevel will be executed

whenever the specified ondemand runlevel is called.  However, no runlevel change will occur (ondemand runlevels are ‘a’, ‘b’,and ‘c’), (英語太菜,那個however不知道該怎麼翻譯才好。慚愧!)

    補充:1、關於進入單一使用者模式,一般都是採用設定initdefault為1或者在grub/lilo中指定一個“single”或“emergency” 命令列參數來實現。其實另外還有一個更乾淨的方法,編輯:kernel /vmlinuz-2.6.9-22.EL ro root=/bin/sh,這樣init就直接啟動一個shell,其他任何進程都沒有啟動哦,夠乾淨吧!

    2、系統正在運行時,telinit命令可更改運行層級。運行層級發生變化時, init 就會從/etc/inittab運行相應的命令。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.