1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      RedHat linux inittab詳解

      更新時間: 2006-03-27 13:24:02來源: 粵嵌教育瀏覽量:1941

        一、什么是init 

        init是Linux系統(tǒng)操作中不可缺少的程序之一。 是一個由內(nèi)核啟動的用戶級進(jìn)程。
      內(nèi)核啟動(已經(jīng)被載入內(nèi)存,開始運行,并已初始化所有的設(shè)備驅(qū)動程序和數(shù)據(jù)結(jié)構(gòu)等)之后,就通過啟動一個用戶級程序init的方式來啟動其他用戶級的進(jìn)程或服務(wù)。所以,init始終是個進(jìn)程(其PID始終為1)。

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

        二、運行級別

        運行級就是操作系統(tǒng)當(dāng)前正在運行的功能級別。這個級別從1到6,具有不同的功能。其功能級別如下:# 0 - 停機(千萬不能把initdefault 設(shè)置為0 )

        # 1 - 單用戶模式# 2 - 多用戶,沒有 NFS # 3 - 完全多用戶模式(標(biāo)準(zhǔn)的運行級)

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

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

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

        這些級別在/etc/inittab 文件里指定。這個文件是init 程序?qū)ふ业闹饕募\行的服務(wù)是放在/etc/rc.d 目錄下的文件。在大多數(shù)的Linux 發(fā)行版本中,啟動腳本都是位于 /etc/rc.d/init.d中的。這些腳本被用ln 命令連接到 /etc/rc.d/rcn.d 目錄。(這里的n 就是運行級0-6)

        三、運行級別的配置

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

        runlevels:表示這一行適用于運行那個/些級別(這里是2,可以有多個,表示在相應(yīng)的運行級均需要運行);另外sysinit、boot、bootwait這三個進(jìn)程會忽略這個設(shè)置值。

        action:表示進(jìn)入對應(yīng)的runlevels時,init應(yīng)該運行process字段的命令的方式,常用的字段值及解釋在附錄內(nèi)。例子中的wait表示需要運行這個進(jìn)程一次并等待其結(jié)束。

        process:具體應(yīng)該執(zhí)行的命令。例子中的/etc/init.d/rc命令啟動運行級別2中應(yīng)該運行的進(jìn)程/命令,并負(fù)責(zé)在退出運行級時將其終止(當(dāng)然在進(jìn)入的runlevel中仍要運行的程序除外。)

        當(dāng)運行級別改變,并且正在運行的程序并沒有在新的運行級別中指定需要運行,那么init會先發(fā)送一個SIGTERM 信號終止,然后是SIGKILL.

        有效的action值如下:respawn:表示init應(yīng)該監(jiān)視這個進(jìn)程,即使其結(jié)束后也應(yīng)該被重新啟動。

        wait: init應(yīng)該運行這個進(jìn)程一次,并等待其結(jié)束后再進(jìn)行下一步操作。

        once: init需要運行這個進(jìn)程一次。

        boot: 隨系統(tǒng)啟動運行,所以runlevel值對其無效。

        bootwait:隨系統(tǒng)啟動運行,并且init應(yīng)該等待其結(jié)束。

        off: 沒有任何意義。

        initdefault:系統(tǒng)啟動后的默認(rèn)運行級別;由于進(jìn)入相應(yīng)的運行級別會激活對應(yīng)級別的進(jìn)程,所以對其指定process字段沒有任何意義。如果inittab文件內(nèi)不存在這一條記錄,系統(tǒng)啟動時在控制臺上詢問進(jìn)入的運行級。

        sysinit: 系統(tǒng)啟動時準(zhǔn)備運行的命令。比如說,這個命令將清除/tmp.可以查看/etc/rc.d/rc.sysinit腳本了解其運行了那些操作。

        powerwait:允許init在電源被切斷時,關(guān)閉系統(tǒng)。當(dāng)然前提是有U P S和監(jiān)視U P S并通知init電源已被切斷的軟件。RH linux默認(rèn)沒有列出該選項。

        powerfail: 同powerwait,但init不會等待正在運行的進(jìn)程結(jié)束。RH linux默認(rèn)沒有列出該選項。

        powerokwait:當(dāng)電源監(jiān)視軟件報告“電源恢復(fù)”時,init要執(zhí)行的操作。

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

        ctrlaltdel:允許init在用戶于控制臺鍵盤上按下C t r l + A l t + D e l組合鍵時,重新啟動系統(tǒng)。注意,如果該系統(tǒng)放在一個公共場所,系統(tǒng)管理員可將C t r l + A l t + D e l組合鍵配置為別的行為,比如忽略等。我是設(shè)置成打印一句罵人的話了^o^. kbrequest:監(jiān)視到特定的鍵盤組合鍵被按下時采取的動作,現(xiàn)在還不完善。

        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、關(guān)于進(jìn)入單用戶模式,一般都是采用設(shè)置initdefault為1或者在grub/lilo中指定一個“single”或“emergency” 命令行參數(shù)來實現(xiàn)。其實另外還有一個更干凈的方法,編輯:kernel /vmlinuz-2.6.9-22.EL ro root=/bin/sh,這樣init就直接啟動一個shell,其他任何進(jìn)程都沒有啟動哦,夠干凈吧!

        2、系統(tǒng)正在運行時,telinit命令可更改運行級別。運行級別發(fā)生變化時, init 就會從/etc/inittab運行相應(yīng)的命令。

      免費預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲国产精品字幕 | 午夜国产亚州视频在线 | 亚洲综合色婷婷六月在线图片 | 亚洲四色在线影院 | 日本日本乱码伦视频网站 | 日韩小u女一区二区三区在线观看 |