青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 8, comments - 12, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

Debian的init進程初始化工作原理(轉)

Posted on 2008-07-09 17:59 eyesmart 閱讀(559) 評論(0)  編輯 收藏 引用 所屬分類: Basic Knowledge
init和inittab
=============
Linux下為什么會要有個init?用過windows 9.x的人應該知道有個批處理文件autoexec.bat,用過windows NT/2000系統(tǒng)的人應該在控制面板中見過system service工具,它們的目的是相同的。只是比較起來windows下的這些東西功能太弱(當然用法也更簡單)。
init是Linux啟動的最后一步,它幫助用戶完成每次啟動系統(tǒng)都必須完成的一些重復性任務,如加載文件系統(tǒng)、各類網(wǎng)絡服務等等程序;它還有一個重要用途,讓用戶自定義系統(tǒng)運行環(huán)境,只啟動需要的進程,關閉不用的進程,釋放內存和處理器資源,讓系統(tǒng)運行得更快更穩(wěn)。

init 會按任務表執(zhí)行我們下的命令,這個任務表就是/etc/inittab文件。我們可以為系統(tǒng)制定多個運行環(huán)境以滿足不同任務的需要,在inittab中稱 之為運行等級(runlevel)。例如,計算機要用來完成一種聯(lián)網(wǎng)編譯任務(與其它系統(tǒng)共享CPU周期,合作編譯軟件),這樣情況需占用大量CPU能力 和內存,所以當計算機用作這種用途時,其他程序的運行要盡可能少。可設置一個運行等級(如:runlevel 4),把其它程序包括X Window全關閉,只啟動聯(lián)網(wǎng)編譯進程;其他時段,你的計算機要與Windows系統(tǒng)共享文件,需要啟動Samba,可以再定義一個運行等級(如: runlevel 2)。
現(xiàn)在當你要進行聯(lián)網(wǎng)編譯時可運行init 4,而不用手工去關閉每個暫不需要的進程;要與Windows系統(tǒng)共享文件可運行init 2。

Debian系統(tǒng)對某些運行等級進行了預先配置(而且是無法修改的)

runlevel 0:它的任務就是關閉所有程序,關機。如果計算機及內核支持APM,系統(tǒng)電源可自動切斷。

runlevel 1:為單用戶模式保留的。在這個運行等級下,除了一個root shell外,沒有其它程序運行。除了root文件系統(tǒng)以只讀方式安裝外,不安裝其它文件系統(tǒng)。該運行等級通常在恢復系統(tǒng)時用。

runlevel 6:與runlevel 0非常相似,只是它是重啟系統(tǒng)而不是關閉系統(tǒng)。

runlevel 2、3、4、5:Debian系統(tǒng)對它們沒有具體規(guī)定,通常可自由進行定制,它們都屬于多用戶模式。其中runlevel 3是Debian使用的默認運行等級。啟動Debian系統(tǒng)時,用的就是這個運行等級。

下面是inittab文件的例子

# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:2:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."

# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
# <id>:<runlevels>:<action>:<process>
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3

該文件有一個基本類型的指令,它們指定命令行,命令行所采取的動作,在何種運行等級下激活命令。這引起命令行的格式大體如下:

id:runlevels:action:command

id是任意一個名稱(具體是什么并不重要),runlevels是一個數(shù)字串(代表運行等級),action描述何時執(zhí)行命令,command指定執(zhí)行的實際命令。拿啟動getty的命令行舉例:

1:2345:respawn:/sbin/getty 38400 tty1

該命令告訴init,它應該在引導后以運行等級2-5運行命令/sbin/getty 38400 tty1。動作標記respawn表示命令在退出時重新運行(當用戶在shell輸入exit的時候)。

從方面的文件中可以看到,運行等級2和3有六個活動的gettys,而等級4和5只有一個。假設運行等級4下有三個shell運行在虛擬控制臺。你在ID為2和3的命令行的運行等級字段添加了數(shù)字4,也就是說你將

2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3

替換成

2:234:respawn:/sbin/getty 38400 tty2
3:234:respawn:/sbin/getty 38400 tty3

然后重啟或執(zhí)行以下命令:

telinit q

對inittab進行修改。telinit q命令指示init重新加載它的配置。參閱telinit(8)。

/etc/inittab的其它行看起來比較復雜,我們先看看還有哪些動作標記:

·respawn:啟動命令并監(jiān)視命令的執(zhí)行,當進程退出時,再次執(zhí)行該命令(通常用于虛擬終端設備上的登錄提示)。 ·wait:進入指定運行等級時,啟動進程。init會停下來,直到執(zhí)行完成。這個標記用于設置特定等級下軟件的啟動。
·once:進入指定的任一運行等級時,啟動一次進程。
·boot:該命令在系統(tǒng)引導時運行。這種類型的指令忽略運行等級。
·bootwait:該命令在系統(tǒng)引導時運行,init等到它退出后才能繼續(xù)做別的事。
·off:禁用所有運行等級下的某個命令。
·initdefault:這種類型的項指定在系統(tǒng)引導時進入哪個運行等級。
·powerwait:這類指令給出在電源不足時需要執(zhí)行的命令。init直到進程完成后才繼續(xù)工作。
·powerfail:與powerwait類似,但init不等待進程完成。
·powerworkwait:電源正常后執(zhí)行。init暫停,直到進程結束。
·powerfailnow:當便攜機電池或外部UPS電池電量不足時執(zhí)行。
·ctrlaltdel:指定init在捕獲ctrl+alt+del組合鍵時執(zhí)行的命令。
·kbdrequest:把特殊動作映射到特定的按鍵。Debian中的是alt+UpArrow。

現(xiàn)在再看上面的文件是不是清楚了許多?

更強大的sysvinit
================
inittab 的主要功能是描述引導及正常操作時,應該在何種運行等級下啟動什么程序,每個運行等級的具體項目完全可以通常/etc/inittab來定義,但 Debian有一個更健壯的方案sysvinit,它被認為是init最強大的應用程序之一。Debian組織inittab的方式是把運行等級的大部分 定義從inittab中移出來,移到一個腳本層次中去。惟一直接從inittab啟動的程序只有getty,它用于虛擬設備上啟動登錄提示符,保留它因為 它們要求特殊處理,在inittab之外處理要困難得多。

inittab來啟動所有軟件當然是可能的,但將所有配置寫在同一個文件既不方便查看也不方便維護,所以文件里會加上這許多行:

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

這些行實際決定了系統(tǒng)在各個運行等級下的行為。它們如何做到的也許并不明顯,但至少我們知道主要意思:首先每行都有個符號ID lx,lx表示runlevel x;其次,每行只在一個運行等級下激活,該運行等級對應著符號ID中的數(shù)字x。命令執(zhí)行時,init停下來,直到進程結束。最后,每個命令行調用一個腳本 /etc/init.d/rc x,這里x代表當前運行等級的數(shù)字。顯然各運行等級的具體任務在/etc/init.d/rc腳本中安排。

Debian init設置的核心在/etc/init.d目錄。該目錄包含了啟動或停止重要軟件的腳本,為了簡化操作,規(guī)定每個腳本都使用相同的一套參數(shù)——start或stop。個別軟件包維護者為用戶著想,往這些腳本中加了其他功能,但init不會去調用它們。
舉個例子,可調用:#/etc/init.d/apache start來啟動Apache,調用:#/etc/init.d/apache stop來關閉它。
作為一個用戶工具,這是非常有用的,它讓用戶輕松啟動和關閉Debian所帶的復雜程序,不過在考慮如何啟動程序前,先檢查 /etc/init.d,看看是不是已經(jīng)有腳本可以做這件事了。借助于這種機制,可以按自己的需求來調整運行等級,/etc/init.d/rc可以把系 統(tǒng)引入所需的運行等級。 /etc/rcx.d是一組指向/etc/init.d的符號鏈接。進行運行等級時,rc在運行等級目錄中按邏輯順序處理每個腳本。首先前綴為K的每個文 件都以參數(shù)stop(按字母和數(shù)字順序)執(zhí)行;其次,以S為前綴的每個腳本都以參數(shù)start(按字母和數(shù)字順序)執(zhí)行。
了解了工作原理,下面試著自己來構造一個運行等級。我們使用運行等級5和與之相關的rc目錄/etc/rc5.d。首先,看看該目錄下的內容: 找出每個符號鏈接所做的工作;查看文件,判斷它來自哪個文件。經(jīng)過仔細查看,找出啟動無用程序的S打頭的腳本,把它們刪掉,在/etc/init.d中找 出需要運行但未包括在內的腳本,例如假設你想在運行等級5下啟動Samba,執(zhí)行命令:

ln -s /etc/init.d/samba /etc/rc5.d/S20samba

看到這里是不是對init有了新的了解,那么來測試一下學習成果:關閉Debian默認安裝時加載的gdm/xdm/kdm進程,讓Debian啟動到命令行終端而不是X。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品福利在线观看| 国产欧美日韩三区| 99re66热这里只有精品4| 久久久久看片| 亚洲欧美日韩天堂一区二区| 日韩午夜在线播放| 亚洲人成免费| 在线看国产一区| **性色生活片久久毛片| 国产亚洲精品7777| 国产精品分类| 欧美午夜精品久久久久免费视| 欧美精品久久99| 欧美精品成人| 欧美日韩亚洲一区二区| 欧美三级午夜理伦三级中视频| 欧美国产高清| 亚洲国产欧美在线人成| 久久久久久久国产| 美女久久网站| 久久久久综合| 久久全国免费视频| 欧美黄免费看| 欧美日韩亚洲国产精品| 欧美伦理影院| 国产精品女人久久久久久| 国产色产综合产在线视频| 好吊一区二区三区| 亚洲看片网站| 亚洲免费一级电影| 久久蜜桃香蕉精品一区二区三区| 免费观看一区| 亚洲激情精品| 亚洲图片在区色| 久久精品视频免费播放| 欧美激情在线| 国产欧美一区二区三区国产幕精品| 黄色一区三区| 亚洲你懂的在线视频| 欧美在线一区二区| 欧美成人精品h版在线观看| 亚洲精美视频| 亚洲愉拍自拍另类高清精品| 久久精品亚洲国产奇米99| 欧美凹凸一区二区三区视频| 欧美性大战久久久久久久| 伊人成人网在线看| 亚洲午夜一区| 亚洲国产一二三| 欧美一区影院| 国产麻豆精品在线观看| 亚洲美女性视频| 免费不卡中文字幕视频| 一道本一区二区| 欧美成人午夜| 亚洲春色另类小说| 久久久久久69| 正在播放欧美一区| 欧美黄色免费网站| 亚洲精选视频在线| 蜜臀av国产精品久久久久| 国产亚洲欧美激情| 欧美一区二区| 亚洲午夜精品国产| 国产精品成人一区二区三区吃奶| 最新日韩欧美| 欧美激情免费观看| 久热re这里精品视频在线6| 国产亚洲永久域名| 久久黄色小说| 欧美影院视频| 精品电影一区| 欧美r片在线| 亚洲一级免费视频| 美女国产一区| 亚洲国产美女精品久久久久∴| 久久国产精品网站| 欧美一区亚洲一区| 激情综合网激情| 美女成人午夜| 久久黄金**| 久久久久久伊人| 亚洲大胆女人| 亚洲国产美女| 欧美视频免费看| 亚洲桃色在线一区| 亚洲网在线观看| 国产在线播精品第三| 另类激情亚洲| 欧美日韩一卡| 久久一区国产| 欧美日韩在线精品| 久久精品亚洲国产奇米99| 免费短视频成人日韩| 亚洲一区二区三区四区视频| 亚洲欧美日韩视频二区| 亚洲国产视频一区| 在线视频日韩精品| 国产在线观看91精品一区| 亚洲欧洲一区二区在线观看| 国产精品久久午夜| 农夫在线精品视频免费观看| 欧美日韩免费精品| 美国成人毛片| 国产精品99免费看 | 欧美xx视频| 久久综合网络一区二区| 亚洲桃色在线一区| 午夜激情一区| 亚洲国产欧洲综合997久久| 久久综合伊人77777| 香蕉免费一区二区三区在线观看 | 国语自产精品视频在线看一大j8| 99精品欧美一区二区三区| 亚洲国产91精品在线观看| 国产午夜精品全部视频播放| 亚洲一区二区三区精品动漫| 在线亚洲一区| 国产精品视频男人的天堂| 亚洲一区尤物| 亚洲欧美日韩一区二区| 亚洲视频自拍偷拍| 亚洲一区二区三区视频| 好吊色欧美一区二区三区四区 | 91久久中文| 欧美大片免费观看| 欧美另类极品videosbest最新版本 | 亚洲级视频在线观看免费1级| 玖玖玖免费嫩草在线影院一区| 国内一区二区三区| 久久在线免费观看| 久久精品国产免费观看| 欧美在线视屏| 久久综合狠狠| 午夜精品区一区二区三| 久久精品男女| 99视频+国产日韩欧美| 最近中文字幕日韩精品| 久久国产精品99精品国产| 亚洲精品视频在线| 午夜久久资源| 亚洲国产欧美日韩| 日韩一级在线观看| 免费在线成人av| 欧美成人小视频| 国产九九精品| 亚洲欧洲在线一区| 国产在线精品一区二区夜色| 亚洲精品一区二| 亚洲自拍偷拍麻豆| 久久综合久久88| 欧美一区二区视频97| 欧美激情精品久久久久久蜜臀| 欧美一区二区三区的| 亚洲免费综合| 久久久久久电影| 国产精品黄视频| 亚洲国产精品久久久久| 国产日韩亚洲欧美| 亚洲黄色在线视频| 亚洲免费一区二区| 久久网站热最新地址| 亚洲色诱最新| 麻豆国产精品一区二区三区 | 亚洲最新色图| 亚洲第一精品在线| 亚洲中无吗在线| 久久久久久自在自线| 国产性做久久久久久| 卡一卡二国产精品| 久久一区欧美| 在线免费观看视频一区| 欧美在线精品免播放器视频| 国产亚洲一级| 久久aⅴ国产紧身牛仔裤| 久久er99精品| 国产日本欧美视频| 午夜精品视频| 亚洲调教视频在线观看| 欧美日韩成人精品| 久久精品观看| 久久精品成人一区二区三区蜜臀 | 欧美一区亚洲一区| 欧美日韩国产大片| 亚洲精一区二区三区| 午夜一区在线| 亚洲一区成人| 国产精品久久久久久av下载红粉| 99re亚洲国产精品| 性8sex亚洲区入口| 国产一区二区高清视频| 亚洲夜晚福利在线观看| 欧美一级免费视频| 欧美午夜免费影院| 中文国产一区| 日韩一级网站| 亚洲天堂久久| 国产精品色在线| 亚洲欧美成人一区二区在线电影 | 欧美成人午夜激情在线|