1. gzyueqian
      13352868059

      RedHat linux inittab詳解

      更新時(shí)間: 2006-03-27 13:24:02來(lái)源: 粵嵌教育瀏覽量:2018

        一、什么是init 

        init是Linux系統(tǒng)操作中不可缺少的程序之一。 是一個(gè)由內(nèi)核啟動(dòng)的用戶級(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è)用戶級(jí)程序init的方式來(lái)啟動(dòng)其他用戶級(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í)別從1到6,具有不同的功能。其功能級(jí)別如下:# 0 - 停機(jī)(千萬(wàn)不能把initdefault 設(shè)置為0 )

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

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

        # 6 - 重新啟動(dòng) (千萬(wàn)不要把initdefault 設(shè)置為6——把被你黑掉的linux的initdefault設(shè)置為0或6也算是拒絕服務(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 / rc 2各字段解釋如下:id:runlevels:action:process id:是一個(gè)任意指定的四個(gè)字符以內(nèi)的序列標(biāo)號(hào),在本文件內(nèi)必須;使用老版本的libc5(低于5.2.18)或a.out庫(kù)編譯出來(lái)的sysvinit限制為2字符。注意:像getty之類的登陸進(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)行);另外sysinit、boot、bootwait這三個(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)。

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

        once: init需要運(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)上詢問(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在用戶于控制臺(tái)鍵盤(pán)上按下C t r l + A l t + D e l組合鍵時(shí),重新啟動(dòng)系統(tǒng)。注意,如果該系統(tǒng)放在一個(gè)公共場(chǎng)所,系統(tǒng)管理員可將C t r l + A l t + D e l組合鍵配置為別的行為,比如忽略等。我是設(shè)置成打印一句罵人的話了^o^. kbrequest:監(jiān)視到特定的鍵盤(pán)組合鍵被按下時(shí)采取的動(dòng)作,現(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’), (英語(yǔ)太菜,那個(gè)however不知道該怎么翻譯才好。慚愧!)

        補(bǔ)充:1、關(guān)于進(jìn)入單用戶模式,一般都是采用設(shè)置initdefault為1或者在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)的命令。

      免費(fèi)預(yù)約試聽(tīng)課

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

      
      

      1. 日韩电影免费在线观看网址 | 亚洲中文字幕精品不卡一本 | 午夜国产乱码福利电影 | 亚洲精品中文字幕无线码 | 色五月五月丁香亚洲综合网人 | 亚洲欧美伊人久久综合一区二区 |