inittab腳本啟動解析 (zz)

http://blog.chinaunix.net/uid-17188120-id-4073497.html


1,啟動inittab
第一步:啟動內核
第二步:執行init (配置文件/etc/inittab)
第三步:啟動相應的腳本,執行inittab腳本,并且執行其他腳本/etc/init.d rc.sysinit rc.d rc.local。。。


2,inittab
init的進程號為1,是所有進程的父進程,內核初始化完畢之后,init程序開始運行。其他軟件也同時開始運行。init程序通過/etc/inittab文件進行配置。
/etc/inittab文件每一行包括四個字段:label:runlevel:action:process。詳細解釋如下。
1)label
登記項標志符,是一個任意指定的、4個字符以內的序列標號,在本文件內必須唯一。
label是1到4個字符的標簽,用來標示輸入的值。一些系統只支持2個字符的標簽。鑒于此原因,多數人都將標簽字符的個數限制在2個以內。該標簽可以是任意字符構成的字符串,但實際上,某些特定的標簽是常用的,在Red Hat Linux中使用的標簽是:
id 用來定義缺省的init運行的級別
si 是系統初始化的進程
ln 其中的n從1~6,指明該進程可以使用的runlevel的級別
ud 是升級進程
ca 指明當按下Ctrl+Alt+Del是運行的進程
pf 指當UPS表明斷電時運行的進程
pr 是在系統真正關閉之前,UPS發出電源恢復的信號時需要運行的進程
x 是將系統轉入X終端時需要運行的進程

2)runlevels
系統運行級,即執行登記項的init級別。用于指定相應的登記項適用于哪一個運行級,即在哪一個運行級中被處理。如果該字段為空,那么相應的登記項將適用于所有的運行級。在該字段中,可以同時指定一個或多個運行級,其中各運行級分別以數字0, 1, 2, 3, 4, 5, 6或字母a, b, c表示,且無須對其進行分隔。
0-->Halt,關閉系統.
1-->單用戶,在grub啟動時加上為kernel加上參數single即可進入此運行等級
2-->無網絡多用戶模式.
3-->有網絡多用戶模式.
4-->有網絡多用戶模式.
5-->X模式
6-->reboot重啟系統
S/s-->同運行等級1
a,b,c-->自定義等級,通常不使用.

3)action
表示進入對應的runlevel時,init應該運行process字段的命令的方式,有效的action值如下。
boot:只有在引導過程中,才執行該進程,但不等待該進程的結束。當該進程死亡時,也不重新啟動該進程。
bootwait:只有在引導過程中,才執行該進程,并等待進程的結束。當該進程死亡時,也不重新啟動該進程。實際上,只有在系統被引導后,并從單用戶模式進入多用戶模式時,這些登記項才被處理;如果系統的默認運行級設置為2(即多用戶模式),那么這些登記項在系統引導后將馬上被處理。
initdefault:指定系統的默認運行級。系統啟動時,init將首先查找該登記項,如果存在,init將依據此決定系統最初要進入的運行級。具體來說,init將指定登記項"run_level"字段中的最大數字(即最高運行級)為當前系統的默認運行級;如果該字段為空,那么將其解釋為"0123456",并以"6"作為默認運行級。如果不存在該登記項,那么init將要求用戶在系統啟動時指定一個最初的運行級。
off:如果相應的進程正在運行,那么就發出一個告警信號,等待20秒后,再通過關閉信號強行終止該進程。如果相應的進程并不存在,那么就忽略該登記項。
once:啟動相應的進程,但不等待該進程結束便繼續處理/etc/inittab文件中的下一個登記項;當該進程終止時,init也不重新啟動該進程。在從一個運行級進入另一個運行級時,如果相應的進程仍然在運行,那么init就不重新啟動該進程。
ondemand:與"respawn"的功能完全相同,但只用于運行級為a、b或c的登記項。
powerfail:只在init接收到電源失敗信號時,才執行該進程,但不等待該進程結束。
powerwait:只在init接收到電源失敗信號時,才執行該進程,并在繼續對/etc/inittab文件進行任何處理前等待該進程結束。
respawn:如果相應的進程還不存在,那么init就啟動該進程,同時不等待該進程的結束就繼續掃描/etc/inittab文件;當該進程終止時,init將重新啟動該進程。如果相應的進程已經存在,那么init將忽略該登記項并繼續掃描/etc/inittab文件。
sysinit:只有在啟動或重新啟動系統并首先進入單用戶模式時,init才執行這些登記項。而在系統從運行級1~6進入單用戶模式時,init并不執行這些登記項。"action"字段為"sysinit"的登記項在"run_level"字段不指定任何運行級。
wait:啟動進程并等待其結束,然后再處理/etc/inittab文件中的下一個登記項。
ctrlaltdel:用戶在控制臺鍵盤上按下Ctrl+Alt+Del組合鍵時,允許init重新啟動系統。注意,如果該系統放在一個公共場所,系統管理員可將Ctrl+Alt+Del組合鍵配置為其他行為,比如忽略等。

4)process
具體應該執行的命令。并負責在退出運行級時將其終止(當然在進入的runlevel中仍要運行的程序除外)。當運行級別改變,并且正在運行的程序并沒有在新的運行級別中指定需要運行時,那么init會先發送一個SIGTERM 信號終止,然后是SIGKILL。

3,inittab舉例
id:3:initdefault:
第一個字段為標識符,下面我們就不說了。這個登記項表示我們默認的運行級別是3,也就是說我們默認開機啟動會進入命令行模式。

si::sysinit:/etc/rc.d/rc.sysinit
所所有的運行級別下,init依賴/etc/rc.d/rc.sysinit這個腳本對系統進行初始化。而/etc/rc.d/rc.sysinit的作用主要是:
1,激活udev和selinux
2,根據/etc/sysctl.conf文件設定內核參數
3,設定系統時鐘
4,鍵盤的鍵映射,即識別鍵盤
5,啟用swap分區
6,設定主機名
7,根文件系統檢測及重新以讀寫方式掛載
8,激活RAID和LVM設備
9,啟用磁盤配額
10,檢測及掛載其他文件系統(掛載/etc/fstab中定義的設備)
11,清除過期的鎖和PID文件

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
當進入n運行級(n就是上面所定義的運行級別),會把/etc/rc.d/rc*.d(*表示對應登記項process字段rc后的數字)這個目錄中所有以S開頭的文件啟用,把以K開頭的文件給禁用,并且這些文件只在進入相應的運行級別時執行一次,退出此運行級別失效。所以每個運行級別的服務是獨立的,而/etc/rc.d/rc*.d這個目錄中存放的是在對應級別下所要開啟和禁用的服務的文件。

ca::ctrlaltdel:/sbin/shutdown -t3 -r now
在所有運行級別下,按下ctrl+alt+del時等待3秒鐘后重新啟動系統。這就是為什么我們按下這三鍵后重新啟動系統

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
在所有的運行級別下,如果電源故障,會給出提示信息,并且在2min后關機。

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
在12345運行級別下,如果電源故障的時候,電源又恢復正常,則給出提示信息,并且立即終止關機。

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
在2345運行級別下,會啟用6個命令行界面的終端,并且一旦終端終止,就會在創建一個新的。這就是為什么我們的系統下會有6個命令行界面的終端。

x:5:respawn:/etc/X11/prefdm -nodaemon
只有我們進入5運行級別,會打開圖形用戶終端,并且一旦終端終止,就會再創建一個新的。你如果把這一行刪了,你的圖形界面還能用嗎?你懂的

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259679.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259679.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259679.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java緩存技術_java緩存技術

最近在做java緩存,了解了一下.以下僅是對map對方式討論。沒有對點陣圖陣討論。作緩存要做以下2點:1:清理及更新緩存時機的處理:. 虛擬機內存不足,清理緩存.. 緩存時間超時,或訪問次數超出, 啟動線程更新2:類和方法的反射 (線程嵌套調用)reflect.invoke的使用。代碼如下&#xf…

xss challenge 解題思路(1-3)

challenge1: 用很基本的方法即可&#xff0c;截圖如下&#xff1a; 提交后成功彈窗&#xff0c;完成。 challenge2 這次我們發現我們輸入的內容被放入value”“ 中&#xff0c;所以需要將前面的結構閉合&#xff0c;構造如下&#xff1a; "><script>alert(docume…

賓得準餅干廣角鏡頭DA15

DA15的掛機效果圖&#xff0c;感覺還是超級的小&#xff0c;是最小的廣角鏡頭了&#xff1a; 主要特點1. 超廣視角當安裝在賓得數碼單反相機上時&#xff0c;這款全新的鏡頭提供相當于35mm膠片規格的約23mm畫面視角&#xff0c;可使拍攝者拍攝出獨特的誘人影像和超廣角鏡頭獨有…

無限“遞歸”的python程序

如果一個函數直接或者間接調用了自己&#xff0c;那么就形成了遞歸&#xff08;recursion&#xff09;&#xff0c;比如斐波那契數列的一個實現 def fib(n):if n < 2:return 1else:return fib(n - 1) fib(n - 2) 遞歸一定要有結束條件&#xff0c;否則就形成了死循環&#…

java slf4j_SLF4J 使用手冊

原文鏈接 譯者&#xff1a;zivyuJava的簡單日志門面( Simple Logging Facade for Java SLF4J)作為一個簡單的門面或抽象&#xff0c;用來服務于各種各樣的日志框架&#xff0c;比如java.util.logging、logback和log4j。SLF4J允許最終用戶在部署時集成自己想要的日志框架。需要…

[譯]Java 垃圾回收介紹

說明&#xff1a;這篇文章來翻譯來自于Javapapers 的Java Garbage Collection Introduction 在Java中&#xff0c;對象內存空間的分配與回收是由JVM中的垃圾回收進程自動完成的。和C語言不一樣的是&#xff0c;開發中不需要在Java中寫垃圾回收代碼。這也是使Java更加流行而且幫…

打印三角形

直角三角形 #include<iostream> using namespace std; int main() { int i,j; for(i1;i<10;i) {for(j1;j<i;j) cout<<"*"; cout<<endl; } } ———————————————————————————…

Linux基礎入門學習筆記之二

第三節 用戶及文件權限管理 Linux用戶管理 Linux是可以實現多用戶登錄的操作系統 查看用戶who命令用于查看用戶 shiyanlou是當前登錄用戶的用戶名 pts/0中pts表示偽終端&#xff0c;后面的數字表示偽終端的序號。 后面是當前偽終端啟動時間 創建用戶創建用戶需要root權限&#…

java選填_java基礎填空選擇題

Core Java試題選擇填空題&#xff1a;全部為多選題&#xff0c;只有全部正確才能得分。1. 編譯java程序的命令是__B_;運行java程序的命令是____A____;產生java文擋的命令是_____D___;查詢java類型是否是serializable類型的命令是___C_____;產生java安全策略文件的命令是____E__…

這幾天有django和python做了一個多用戶博客系統(可選擇模板) 沒完成,先分享下...

這個TBlog已經全新改版了&#xff0c;更名為UUBlog 新版地址&#xff1a; 用Python和Django實現多用戶博客系統——UUBlog 斷斷續續2周時間吧&#xff0c;用django做了一個多用戶博客系統&#xff0c;現在還沒有做完&#xff0c;做分享下,以后等完善了再慢慢說 做的時候房展了博…

Hibernate的generator屬性

本文講述Hibernate的generator屬性的意義。Generator屬性有7種class&#xff0c;本文簡略描述了這7種class的意義和用法。[xhtml] view plaincopy <class name"onlyfun.caterpillar.User" table"USER"> <id name"id" type"stri…

java 對象池 博客_Java對象池技術的原理及其實現的小結

一起學習Java對象的生命周期大致包括三個階段&#xff1a;對象的創建&#xff0c;對象的使用&#xff0c;對象的清除。因此&#xff0c;對象的生命周期長度可用如下的表達式表示&#xff1a;T T1 T2 T3。其中T1表示對象的創建時間&#xff0c;T2表示對象的使用時間&#xff0c…

matlab中gatbx工具箱的添加

1. 從http://crystalgate.shef.ac.uk/code/下載工具箱壓縮包gatbx.zip 2. 解壓gatbx.zip&#xff0c;將其子文件夾genetic放在matlab安裝目錄toolbox文件夾下 3. 在matlab主窗口選擇File -> Set Path&#xff0c; 單擊"Add Folder"按鈕&#xff0c;找到工具箱所在…

C#與數據庫訪問技術總結(十七)

使用DataSet對象訪問數據庫 當對DataSet對象進行操作時&#xff0c;DataSet對象會產生副本&#xff0c;所以對DataSet里的數據進行編輯操作不會直接對數據庫產生影響&#xff0c;而是將DataRow的狀態設置為added、deleted或changed&#xff0c;最終的更新數據源動作將通過DataA…

MySQL數據高級查詢之連接查詢、聯合查詢、子查詢

2019獨角獸企業重金招聘Python工程師標準>>> 一、連接查詢 連接查詢: 將多張表(>2)進行記錄的連接(按照某個指定的條件進行數據拼接)。 連接查詢的意義: 在用戶查看數據的時候,需要顯示的數據來自多張表. 連接查詢: join, 使用方式: 左表 join 右表&#xff1b;左…

Oracle11g解鎖報錯SP2-0306-選項無效

普通用戶登錄isqlplus: (一)在瀏覽器中輸入URL &#xff08;http://localhost:5560/isqlplus&#xff09;。顯示登錄界面 這里只能用普通用戶進行登錄&#xff0c;因為要用sys登錄&#xff0c;必須用sys的DBA身份登錄。所以用普通用戶SCOTT&#xff0c;但是還未解鎖 問題:SP2-0…

java web登錄action_JavaWeb中登陸功能

首先我們要JavaWeb登陸的基本流程&#xff1a;JSP頁面發送請求——>Servlet——>Servlet通過調用方法從數據庫中得到數據并將結果返回頁面我們先建立三個jsp頁面&#xff0c;包括login.jsp(登陸頁面)、index.jsp(顯示登陸成功后的信息)、error.jsp(登錄失敗的頁面)&#…

Android Download Manager用法大全

http://www.trinea.cn/android/android-downloadmanager/ http://www.trinea.cn/android/android-downloadmanager-pro/轉載于:https://www.cnblogs.com/soaringEveryday/articles/4135204.html

Chrome瀏覽器無法觀看視頻,一直提示“adobe flash player 已過期” ?

很多新用戶在安裝了Chrome瀏覽器或者更新過的的時候&#xff0c;經常提示“ adobe flash player 已過期”的問題&#xff0c;反復提示&#xff0c;導致無法觀看視頻。于是從網上也找了很多辦法都沒有解決。這里給大家提供一個最完美的解決方案。經親自測試&#xff0c;完美解決…

關于JVM的垃圾回收GC的一些記錄

目錄 一、JVM內存區域劃分 二、從一個基本問題開始引入垃圾回收 三、GC作用的區域 三、如何確定一個對象是否可以被當成垃圾進行回收 &#xff08;1&#xff09;引用計數法 &#xff08;2&#xff09;可達性分析算法 &#xff08;3&#xff09;引用的類型 &#xff08;3…