centos6服務啟動腳本及開機啟動過程


centos6服務啟動腳本

centos6的服務啟動腳本都放在/etc/rc.d/init.d/下,/etc/init.d/是/etc/rc.d/init.d/的軟鏈接; centos6的服務啟動腳本都有兩行描述: # chkconfig:定義默認在哪個級別下啟動(runlevels)、啟動優先次序(SS)、關閉的優先次序(KK);當chkconfig命令來為此腳本在rc#.d目錄下創建鏈接 時,runlevels表示默認創建為S開頭的鏈接,-表示,沒有級別默認為S開頭的鏈接,除此之外的級別都默認創建為K開頭的鏈接;S后面的啟動優先級 為SS所表示的數字;K后面的關閉優先次 序為KK所表示的數字;S開頭的軟鏈接表示為on,K開頭的表示為off狀態的; # description:用於說明此腳本的簡單功能;\,表示為續行; 雖然這兩行是注釋,但是chkconfig命令會讀取這兩行; 守護進程:可以管理在哪個級別下啟動或者關閉的服務; /etc/rc.d/rc.local:系統開機最后啟動的一個服務,准確說,應該執行的一個腳本;可以把開機想執行的一些命令(創建或者刪除等操作)放到此腳本中; 

自創建服務腳本

#!/bin/bash # chkconfig: 2345 77 22 #優先啟動次序數值越大,則越先關閉;反之,先啟動(數值小),則后關閉;服務之間有依賴關系,有的服務需要先啟動 # description: Test Service LOCKFILE=/var/lock/subsys/myservice #服務腳本啟動后,都會在鎖目錄下創建一個服務對應的文件 function STATUS { if [ -e $LOCKFILE ];then echo "Running..." else echo "Stopping..." fi } function usage { echo "`basename $0` (start|stop|restart|status)" } case $1 in start) echo "starting..." touch $LOCKFILE ;; stop) echo "stopping..." rm -f $LOCKFILE &>/dev/null ;; restart) echo "restarting..." rm -f $LOCKFILE &>/dev/null touch $LOCKFILE ;; status) STATUS ;; *) usage ;; esac 

chkconfig命令

[root@centos6 ~]# chkconfig --list #查看所有獨立守護服務(守護進程)的啟動設定 [root@centos6 ~]# chkconfig --list SERVICE_NAME #查看某一個獨立守護服務(守護進程)的啟動設定 [root@centos6 ~]# chkconfig --add SERVICE_NAME #把某個服務腳本添加到chkconfig可控制的服務列表中(創建S開頭的軟鏈接) [root@centos6 ~]# chkconfig --del SERVICE_NAME #刪除服務的鏈接文件 [root@centos6 ~]# chkconfig [--level RUNLEVELS] SERVICE_NAME (on|off) #指定服務在哪個級別下開啟或者關閉 #如果省略級別指令,默認為2345級別; 

/etc/inittab的任務:

1、設定默認運行級別: 2、運行系統初始化腳本; 3、運行指定運行級別對應的目錄下的腳本(S開頭的都為start,K開頭的都為stop); 4、設定Ctrl+Alt+Del組合鍵的操作; 5、定義UPS電源在電源故障/恢復時執行的動作; 6、啟動虛擬終端(2345級別下啟動); 7、啟動圖形終端(只在5級別下啟動); 

守護進程類型

獨立守護進程 瞬時守護進程:不需要關聯至運行級別(沒有運行級別概念); xinetd:超級守護進程;負責管理所有的瞬時守護進程;超級守護進程需要關聯至運行級別; xinetd與瞬時守護進程的關系: 瞬時守護進程平時是不需要打開的,只需要開啟超級守護進程即可,由超級守護進程(xinetd)進行統一管理;當有用戶訪問瞬時守護進程時,xinetd會激活用戶所訪問的瞬時守護進程,用戶訪問完畢后,再關閉瞬時守護進程; [root@centos6 ~]# chkconfig PROCESS_NAME on #啟動瞬時守護進程;前提是先得安裝xinetd;yum install xinetd -y 

系統啟動流程

1、POST加電自檢;計算機啟動時,系統會載入一段程序,將程序映射到CPU能夠尋址的地址空間去,讓CPU能夠執行其中的指令,這些指令用來系統檢測用; 2、檢測完成后,如果基本、核心硬件如果沒問題則進入下一步; 3、根據BIOS中所設定的系統啟動流程去找對應存儲設備上的MBR;如果MBR存在,會讀取MBR中的bootloader(一段程序;MBR留給bootloader用的空間為446byte); 4、BootLoader中配置了所要引導的系統內核的位置;因此當BIOS加載到內存中后,將控制權限轉交給bootloader后,bootloader接收了整個系統的控制權限; 5、根據用戶的選擇,讀取相應操作系統的內核; 6、將內核加載到內存中的合適位置進行解壓縮並完成內核初始化后,bootloader會將權限轉交給內核; 內核初始化: 硬件探測 裝載驅動:驅動程序可能在內核中,也可能在另一個輔助程序中:initramfs,initramfs中有內核所依賴到的其他設備的驅動及根文件系統驅動 掛載根文件系統 啟動用戶空間中的第一個進程init 注意: 內核要完成初始化依賴於驅動程序,如果驅動程序不在內核當中,需要到某個文件系統下去裝載驅動程序;但是在根文件系統被掛載之前,如果內核訪問根文 件系統需要用到驅動程序,但內核中沒有,需要去文件系統中尋找驅動,但是文件系統還未掛載,所以就需要用到initramfs為內核提供訪問真正的根文件系 統所需的基本驅動程序;initramfs是一個輔助性過渡性的中間層,它能夠實現kernel和真正的根文件系統連接起來;內核掛載根文件系統默認是以只讀方式 掛載; 7、執行init進程,init在centos6上雖然還叫init,但是本身實際是upstart程序;init(upstart)本身的配置文件:/etc/inittab和/etc/init/*(所有).conf; 8、/etc/initab所需要執行:設定運行級別、系統初始化腳本(/etc/rc.d/rc.sysinit)、運行指定級別的服務腳本、執行最后一個腳本(/etc/rc.d/rc.local)、啟動虛擬終端、圖形終端; /etc/rc.d/rc.sysinit初始化腳本的作用: 檢測,並且以讀寫方式重新掛載根文件系統; 設定主機名; 檢測並掛載/etc/fstab中的其他文件系統; 啟用swap分區; 初始化外圍硬件設備的驅動; 根據/etc/sysctl.conf設定內核參數; 激活LVM和RAID設備; 清理過期的鎖和PID文件; 激活鍵映射;(鍵盤每個鍵的具體功能) BIOS:基本輸入輸出系統;他保存着計算機最重要的基本輸入輸出的程序 、開機后自檢程序和系統自啟動程序;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM