lsl-322

          常用鏈接

          統(tǒng)計(jì)

          最新評(píng)論

          Linux中的inittab文件

           

          一、什么是init

            initLinux系統(tǒng)操作中不可缺少的程序之一。是一個(gè)由內(nèi)核啟動(dòng)的用戶(hù)級(jí)進(jìn)程。
            內(nèi)核啟動(dòng)(已經(jīng)被載入內(nèi)存,開(kāi)始運(yùn)行,并已初始化所有的設(shè)備驅(qū)動(dòng)程序和數(shù)據(jù)結(jié)構(gòu)等)之后,就通過(guò)啟動(dòng)一個(gè)用戶(hù)級(jí)程序init的方式來(lái)啟動(dòng)其他用戶(hù)級(jí)的進(jìn)程或服務(wù)。所以,init始終是第一個(gè)進(jìn)程(其PID始終為1)。
            內(nèi)核會(huì)在過(guò)去曾使用過(guò)init的幾個(gè)地方查找它,它的正確位置(對(duì)Linux系統(tǒng)來(lái)說(shuō))是/sbin/init.如果內(nèi)核找不到init,它就會(huì)試著運(yùn)行/bin/sh,如果運(yùn)行失敗,系統(tǒng)的啟動(dòng)也會(huì)失敗。

          二、運(yùn)行級(jí)別

            運(yùn)行級(jí)就是操作系統(tǒng)當(dāng)前正在運(yùn)行的功能級(jí)別。這個(gè)級(jí)別從16,具有不同的功能。其功能級(jí)別如下:
              # 0 -
          停機(jī)(千萬(wàn)不能把initdefault 設(shè)置為0
            # 1 - 單用戶(hù)模式
              # 2 -
          多用戶(hù),沒(méi)有 NFS
              # 3 -
          完全多用戶(hù)模式(標(biāo)準(zhǔn)的運(yùn)行級(jí))
            # 4 - 沒(méi)有用到
              # 5 - X11
          xwindow
            # 6 - 重新啟動(dòng)(千萬(wàn)不要把initdefault 設(shè)置為6——把被你黑掉的linuxinitdefault設(shè)置為06也算是拒絕服務(wù)攻擊噢!)

            除此之外還有ABC三個(gè)運(yùn)行級(jí)別,但在RHLinux中都沒(méi)有意義。
            這些級(jí)別在/etc/inittab 文件里指定。這個(gè)文件是init 程序?qū)ふ业闹饕募钕冗\(yùn)行的服務(wù)是放在/etc/rc.d 目錄下的文件。在大多數(shù)的Linux 發(fā)行版本中,啟動(dòng)腳本都是位于 /etc/rc.d/init.d中的。這些腳本被用ln 命令連接到 /etc/rc.d/rcn.d 目錄。(這里的n 就是運(yùn)行級(jí)0-6

          三、運(yùn)行級(jí)別的配置

            運(yùn)行級(jí)別的配置是在 /etc/inittab行內(nèi)進(jìn)行的,如下所示:12 2 wait /etc/init.d/rc2各字段解釋如下:idrunlevelsactionprocess

              id
          :是一個(gè)任意指定的四個(gè)字符以?xún)?nèi)的序列標(biāo)號(hào),在本文件內(nèi)必須唯一;使用老版本的libc5(低于5.2.18)或a.out庫(kù)編譯出來(lái)的 sysvinit限制為2字符。注意:像getty之類(lèi)的登陸進(jìn)程必須使id字段與tty編號(hào)一致,如tty1需要id=1,許多老版本的登陸進(jìn)程都遵循這種規(guī)則。
            runlevels:表示這一行適用于運(yùn)行那個(gè)/些級(jí)別(這里是2,可以有多個(gè),表示在相應(yīng)的運(yùn)行級(jí)均需要運(yùn)行);另外sysinitbootbootwait這三個(gè)進(jìn)程會(huì)忽略這個(gè)設(shè)置值。
            action:表示進(jìn)入對(duì)應(yīng)的runlevels時(shí),init應(yīng)該運(yùn)行process字段的命令的方式,常用的字段值及解釋在附錄內(nèi)。例子中的wait表示需要運(yùn)行這個(gè)進(jìn)程一次并等待其結(jié)束。
            process:具體應(yīng)該執(zhí)行的命令。例子中的/etc/init.d/rc命令啟動(dòng)運(yùn)行級(jí)別2中應(yīng)該運(yùn)行的進(jìn)程/命令,并負(fù)責(zé)在退出運(yùn)行級(jí)時(shí)將其終止(當(dāng)然在進(jìn)入的runlevel中仍要運(yùn)行的程序除外。)
            當(dāng)運(yùn)行級(jí)別改變,并且正在運(yùn)行的程序并沒(méi)有在新的運(yùn)行級(jí)別中指定需要運(yùn)行,那么init會(huì)先發(fā)送一個(gè)SIGTERM 信號(hào)終止,然后是SIGKILL.

            有效的action值如下:
              respawn
          :表示init應(yīng)該監(jiān)視這個(gè)進(jìn)程,即使其結(jié)束后也應(yīng)該被重新啟動(dòng)。
            waitinit應(yīng)該運(yùn)行這個(gè)進(jìn)程一次,并等待其結(jié)束后再進(jìn)行下一步操作。
            onceinit需要運(yùn)行這個(gè)進(jìn)程一次。
            boot:隨系統(tǒng)啟動(dòng)運(yùn)行,所以runlevel值對(duì)其無(wú)效。
            bootwait:隨系統(tǒng)啟動(dòng)運(yùn)行,并且init應(yīng)該等待其結(jié)束。
            off:沒(méi)有任何意義。
            initdefault:系統(tǒng)啟動(dòng)后的默認(rèn)運(yùn)行級(jí)別;由于進(jìn)入相應(yīng)的運(yùn)行級(jí)別會(huì)激活對(duì)應(yīng)級(jí)別的進(jìn)程,所以對(duì)其指定process字段沒(méi)有任何意義。如果inittab文件內(nèi)不存在這一條記錄,系統(tǒng)啟動(dòng)時(shí)在控制臺(tái)上詢(xún)問(wèn)進(jìn)入的運(yùn)行級(jí)。
            sysinit:系統(tǒng)啟動(dòng)時(shí)準(zhǔn)備運(yùn)行的命令。比如說(shuō),這個(gè)命令將清除/tmp.可以查看/etc/rc.d/rc.sysinit腳本了解其運(yùn)行了那些操作。
            powerwait:允許init在電源被切斷時(shí),關(guān)閉系統(tǒng)。當(dāng)然前提是有U P S和監(jiān)視U P S并通知init電源已被切斷的軟件。RH linux默認(rèn)沒(méi)有列出該選項(xiàng)。
            powerfail:同powerwait,但init不會(huì)等待正在運(yùn)行的進(jìn)程結(jié)束。RH linux默認(rèn)沒(méi)有列出該選項(xiàng)。
            powerokwait:當(dāng)電源監(jiān)視軟件報(bào)告電源恢復(fù)時(shí),init要執(zhí)行的操作。
            powerfailnow:檢測(cè)到ups電源即將耗盡時(shí),init要執(zhí)行的操作,和powerwait/powerfail不同的喲。
            ctrlaltdel:允許init在用戶(hù)于控制臺(tái)鍵盤(pán)上按下Ctrl + Alt + Del組合鍵時(shí),重新啟動(dòng)系統(tǒng)。注意,如果該系統(tǒng)放在一個(gè)公共場(chǎng)所,系統(tǒng)管理員可將Ctrl + Alt + Del組合鍵配置為別的行為,比如忽略等。我是設(shè)置成打印一句罵人的話了^o^. kbrequest:監(jiān)視到特定的鍵盤(pán)組合鍵被按下時(shí)采取的動(dòng)作,現(xiàn)在還不完善。
            ondemandA 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’),(英語(yǔ)太菜,那個(gè)however不知道該怎么翻譯才好。慚愧!)

          補(bǔ)充:
            
            1、關(guān)于進(jìn)入單用戶(hù)模式,一般都是采用設(shè)置initdefault1或者在grub/lilo中指定一個(gè)“single”“emergency” 命令行參數(shù)來(lái)實(shí)現(xiàn)。其實(shí)另外還有一個(gè)更干凈的方法,編輯:kernel /vmlinuz-2.6.9-22.EL ro root=/bin/sh,這樣init就直接啟動(dòng)一個(gè)shell,其他任何進(jìn)程都沒(méi)有啟動(dòng)哦,夠干凈吧!
            2、系統(tǒng)正在運(yùn)行時(shí),telinit命令可更改運(yùn)行級(jí)別。運(yùn)行級(jí)別發(fā)生變化時(shí), init 就會(huì)從/etc/inittab運(yùn)行相應(yīng)的命令

          posted on 2010-08-19 08:33 聽(tīng)雨殘荷 閱讀(203) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): AIX


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 房产| 容城县| 军事| 江都市| 广南县| 岳阳市| 天祝| 海丰县| 峨边| 北安市| 宁明县| 大名县| 诸暨市| 石城县| 景洪市| 彰武县| 扬州市| 呼和浩特市| 醴陵市| 永川市| 波密县| 昌吉市| 伊宁县| 札达县| 弥勒县| 襄樊市| 垣曲县| 长治市| 合水县| 柳州市| 涞源县| 安远县| 文安县| 海阳市| 东丽区| 德州市| 日土县| 库尔勒市| 丹凤县| 岱山县| 龙州县|