linux的第乙個程序是0號程序,一般認為0號程序建立了1號程序,1號程序建了所有的kernel程序,1號程序是所有程序的祖先。1號程序又稱init程序,init程序是所有程序之父。
init讀取/etc/inittab,以下是debian系統的inittab,init就是讀取這個檔案獲取的第乙個指令碼,請注意裡面的粗體字,會對您理解linux的執行有一定的幫助。
# /etc/inittab: init(8)configuration.
# $id: inittab,v 1.912002/01/25 13:35:21 miquels exp $
# the default runlevel.
預設的執行等級
2 是多使用者形式,這個數字也可以是
1獲其他的數字,關於執行等級,請見下文。在終端下,直接執行
runlevel
看到當前系統的預設執行等級。
id:2:initdefault:
# boot-time systemconfiguration/initialization script.
# this is run first except when booting inemergency (-b) mode.
下面的命令是第乙個執行的,除非是在緊急模式下啟動。
可以看到,第乙個執行的程式是
/etc/init.d/rcs
,也就是說
rcs就是我們系統的初始化指令碼。
rcs是系統的初始化指令碼,而在
rcs檔案中,直接執行了
rc程式,在
rc程式中,會執行當前系統預設執行等級下的所有要執行的指令碼,這些指令碼存放在
rc?.d
資料夾中(「?」是乙個數字,執行等級是
2的話就是
rc2.d
資料夾),在
rc?.d
資料夾中是以
命名的鏈結,這些鏈結至
/etc/init.d/
資料夾下的指令碼,如果是
k,那麼意味著向
/etc/init.d/
下對應name
的指令碼傳入
stop
引數,如果是
s開頭的鏈結,意味著傳入
start
引數
si::sysinit:/etc/init.d/rcs
…
到此,和我們的開機啟動關係密切的**已經結束了,當然,不排除在使用者登入之後有針對使用者的開機啟動專案
# what to do insingle-user mode.
~~:s:wait:/sbin/sulogin …
在/etc/init.d/下的指令碼大都遵循一定的規則,其在關鍵的一條就是要接收start|stop|restart引數,分別表示啟動、關閉、重啟。當系統啟動時,rc指令碼會根據/etc/rc?.d/下指令碼的名稱(s或k開頭)傳入對應的引數至/etc/init.d/下的指令碼。
以下是可參考的系統啟動指令碼和寫法
#!/bin/bash
case "$1"in
start)
echo "starting program..." ;;
在此寫入啟動程式的指令碼,寫法通一般
shell
指令碼的寫法,可以使用函式
echo 「ended」 ;;
stop)
echo "stopping program..." ;;
在此寫入停止程式的指令碼,寫法通一般
shell
指令碼的寫法,可以使用函式
echo 「stopped」 ;;
restart)
echo "restarting program..." ;;
在此寫入重啟程式的指令碼,寫法通一般
shell
指令碼的寫法,可以使用函式
echo "restarted"
;; *)
echo "usage: $0"
exit 0 ;;
esac
exit 0;
如果您想開機啟動自己的指令碼,先在/etc/init.d/目錄下增加上述格式的指令碼,再給此指令碼可執行許可權,再使用update-rc.d 你的指令碼名稱 start 88 2 . 注意,在2後面先是乙個空格,再是乙個「.」,2是您系統的預設執行等級,88是您的指令碼的執行次序,是說在系統的第幾個執行,您也可以在其他的數字,start是說要建立乙個以s開頭的鏈結,執行此命令,將在/etc/rc2.d/下建立「s88你的指令碼名稱」的乙個鏈結,開機之後,此指令碼將自動執行。如果要刪除這個自動執行,只需要刪除對應的鏈結即可。
要開機啟動某個指令碼,也可以將此指令碼直接在/etc/rc.local命令中執行,需要注意的是這裡新增的方法是在所有rc?.d目錄中的指令碼都被執行過後才執行。這種方法是一種比較快捷的方法。
甚至可以在/etc/inittable或/etc/init.d/rc檔案中直接加入,但這種方法是不被提倡的。
關於linux 啟動
linux啟動的順序 1.bios 2.讀硬碟的mbr 傳說中的硬碟的第乙個磁碟的第乙個扇區第乙個磁軌的第乙個磁頭 的資訊,找os 3.找到該系統的核心檔案 3.啟動init程序 4.執行 ect rc.d sysinit 執行run command精靈程序 sysinit 5.裝載其他模組 6.執...
關於linux啟動
安裝或公升級red hat enterprise linux時,必須先準備乙個安裝用的啟動介質 boot media 以便能順利地啟動rhel的安裝程式。事實上,rhel的第一張安裝光碟就是rhel安裝用的啟動介質。目前rhel支援兩種形式的啟動介質 光碟形式的啟動介質,usb形式的啟動介質。1.開...
關於linux啟動kernel panic錯誤解決
重灌系統未免太麻煩現推薦兩個解決方案 1.系統啟動的時候,按下 e 鍵進入grub編輯介面,編輯grub選單,選擇 kernel vmlinuz 2.6.23.1 42.fc8 ro root dev vogroup00 logvol00 rhgb quiet 一欄,按 e 鍵進入編輯,在末尾增加e...