Centos啟動流程及服務腳本(work)

centos啟動流程

簡單流程簡介:

POST –> Boot Sequence(BIOS) –> Boot Loader (MBR) –> Kernel(ramdisk) –> rootfs –> switchroot –> /sbin/init –>(/etc/inittab, /etc/init/*.conf) –> 設定默認運行級別 –> 系統初始化腳本 –> 關閉或啟動對應級別下的服務 –> 啟動終端

流程詳解:分為五大階段

第一階段:硬件引導啟動

通過ROM中的BIOS的自檢程序一次查找到第一個有引導程序的設備就是本次要用到的設備

第二階段:GRUB啟動引導階段

對其設備中的MBR中的bootloder(引導加載程序)加載GRUB的Stage 1,由于stage 1 階段是要加載stage2階段來識別gurb.conf文件,來對用戶提供一個選擇內核的菜單,但是現在stage 1 還并不能識別stage 2 的文件系統,因此要通過stage 1.5先加載文件系統驅動,讓stage 1能識別stage 2 的文件系統,此時stage 1 才能訪問到stage 2 。 

GRUB.conf文件為用戶體統一個菜單,讓用戶選擇要啟動的內核后裝載到RAM的特定空間中,對內核文件進行解壓,展開,之后就由Kernel來進行操作

第三階段:內核引導階段

內核文件在內存中解壓展開完成之后,內核先對自身進行初始化:

1、探測可識別到的所有硬件設備

2、加載硬件驅動程序

此時可能內核中并不能識別到根文件系統的驅動,就要由ramdisk來當橋梁,通過加載ramdisk來加載根之后,真正的根也就被加載上了。

ramdisk:在操作系統安裝的時候生成的,他會掃描當前系統中磁盤分區的系統,在記錄在此虛擬根文件中,由于ramdisk文件在/boot下,因此可直接加載ramdisk,從而加載了根的文件系統

3、識別到根文件系統之后以只讀的方式掛載根文件系統

4、根掛載之后內核就可以運行第一個應用程序(/sbin/init),再由它來接手開機的流程.

第四階段:init程序

1、init程序接手后運行第一個腳本,/etc/inittab,  此文件定義當前系統級別。

            # Default runlevel. The runlevels used are:            
            #   0 - halt (Do NOT set initdefault to this)     //關機,
            #   1 - Single user mode//單用戶模式,維護用,只能root用戶,無需認證
            #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)//會啟動網絡功能
            #   3 - Full multiuser mode//字符界面模式,
            #   4 - unused//保留,可以同模式3一樣理解
            #   5 - X11 //圖形界面
            #   6 - reboot (Do NOT set initdefault to this)//重啟
            id:3:initdefault:
            id:任務標識
            3:任務運行級別
            initdefault:系統默認運行級別

2、再一次運行/etc/init/*.conf所有腳本文件,

其中,/etc/init/rcS.conf文件用來運行系統初始化腳本文件/etc/rc.d/rc.sysinit

        [root@Centos init]# vim /etc/init/rcS.conf             
            # rcS - runlevel compatibility
            # This task runs the old sysv-rc startup scripts.   // /etc/init/rcS.conf文件內任務描述就能知道
            /etc/rc.d/rc.sysinit腳本文件中定義了一下系統功能:            
            (1)設定主機名
            (2)設定歡迎信息
            (3)激活udev和selinux
            (4)掛載/etc/fstab文件中定義的所有掛載項
            (5)檢測根文件系統,并以讀寫方式重新掛載根文件系統
            (6)設定系統時鐘
            (7)根據/etc/sysctl.conf文件來設置內核參數
            (8)激活lvm及軟raid設備
            (9)激活swap設備
            (10)加載額外設備的驅動程序
            (11)清理操作

再由/etc/init/rc.conf文件決定當前系統運行級別,在根據運行級別來運行相對應級別的腳本來管理需要關閉或啟動的服務

/etc/init/rc.conf文件中定義當前系統運行級別來運行對應級別服務腳本文件

            [root@Centos rules.d]# cat /etc/init/rc.conf             
            # rc - System V runlevel compatibility
            # This task runs the old sysv-rc runlevel scripts.  It
            # is usually started by the telinit compatibility wrapper
            # Do not edit this file directly. If you want to change the behaviour,
            # please create a file rc.override and put your changes there.
            start on runlevel [0123456]
            stop on runlevel [!$RUNLEVEL]
            task
            export RUNLEVEL
            console output
            exec /etc/rc.d/rc $RUNLEVEL    //此代碼運行相對應運行級別的服務腳本文件

此代碼運行的服務腳本于/etc/rc.d/rcN.d文件:

    [root@Centos init]# cd /etc/rc.d/
    init.d/     rc0.d/      rc2.d/      rc4.d/      rc6.d/      rc.sysinit  
    rc          rc1.d/      rc3.d/      rc5.d/      rc.local

第五階段:用戶登錄

Crond計劃任務

1、每周2, 4, 7備份/var/log/messages文件至/logs目錄中,文件名形如“messages-yyyymmdd”

[root@Centos6 bin]# vim message.sh 
#!/bin/bash
[ -e /logs ] && cp -a /etc /logs/messages-`date +%Y%M%d` || mkdir /logs && cp -a /etc /logs/messages-`date +%Y%M%d`
[root@Centos6 bin]# chmod -x message.sh
[root@Centos6 bin]# crontab -e
1 0 * * 2,4,7 /root/bin/message.sh

2、每兩小時取出當前系統/proc/meminfo文件中以S或M開頭的信息追加至/tmp/meminfo.txt文件中

[root@Centos6 bin]# crontab -e
0 */2 * * * egrep -o "^(S|M).*" /proc/meminfo >> /tmp/meminfo.txt

二、添加模擬服務腳本文件

1、定義服務腳本文件,

#!/bin/bash
#
#chkconfig: 35 30 50        //此注釋必須寫在服務腳本文件中
#description:testsrv script//描述信息(centos5必須有,centos6可寫)
#
file=`basename $0`
files=/var/lock/subsys/$file
start() {
if [ -f $files ];then
echo "$file is running"
else    
touch $files
echo "$file is running successful"
fi
}
stop() {
if [ -f $files ];then
rm -f $files
echo "$file stoped successful"
else    
echo "$file don't starting"
fi
}
restart() {
if [ -f $files ];then
rm -f $files
sleep 1
echo "stop $file successful"
touch $files
sleep 1
echo "restart $file successful"
else
touch $files
echo "start $files successful"
fi
}
status() {
if [ -f $files ];then
echo  "$file is running"
else
echo "$file is stopped!"
fi
}
case $1 in
start)
start ;;
stop)
stop ;;
restart)
restart ;;
status)
status ;;
exit)
break ;;
*)
echo -e "\033[5;31mInput error!\033[0m"
echo "Please Usage `basename $0` {start|stop|restart|status}" ;;
esac

        2、移動測試服務到chkconfig管理程序腳本目錄中

[root@Centos bin]# mv testsrv /etc/rc.d/init.d/
[root@Centos bin]# ls /etc/rc.d/init.d/
auditd            halt       killall       netconsole  postfix      rsyslog    sshd       xinetd
blk-availability  ip6tables  lvm2-lvmetad  netfs       rdisc        sandbox    svnserve
crond             iptables   lvm2-monitor  network     rdma         saslauthd  testsrv
functions         kdump      mdmonitor     nfs-rdma    restorecond  single     udev-post

        3、使用chkconfig -add 命令將測試服務添加到開機啟動隊列中

[root@Centos init.d]# chkconfig --add testsrv 
[root@Centos init.d]# chkconfig testsrv on
[root@Centos init.d]# chkconfig --list
testsrv        0:off1:off2:off3:on4:off5:on6:off
//觀察到只有我們在腳本文件中添加到的啟動模式才設定為on

        4、可使用chkconifg–add、–del、–list,service  SERVICE  [start|stop|restart|status]進行對此服務管

原創文章,作者:Lii,如若轉載,請注明出處:http://www.www58058.com/45749

(1)
LiiLii
上一篇 2016-09-13
下一篇 2016-09-14

相關推薦

  • 馬哥教育網絡班20期-第七周課程作業

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;     ]#mke2fs -t ext4 -b 2048 -L MYDATA -m&n…

    學員作品 2016-09-07
  • 【福利貼-招聘】- 維護工程師

    地點:黃浦–人民廣場  職位:技術支持/維護 要求:招1人| 大專| 1-2年 薪資范圍: 8-12k 職位職能:技術支持/維護工程師 崗位職責: 1.熟悉Linux及其遠程維護; 2.熟練掌握Linux網絡安裝、日常管理、安全、備份、恢復、故障處理、日志分析等技能; 3.熟悉Web、mysql優化管理、apache等常見的問題及處理 …

    Linux職位 2015-05-14
  • sed命令詳解

    sed命令:  Stream EDitor, 行編輯器  sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重…

    2016-08-10
  • 文本處理工具筆記

    1.文件查看相關命令      (1)cat命令      cat [OPTION]… [FILE]…      -E:顯示行結束符      -n:對顯示除的每一行進行編號 …

    學員作品 2016-08-10
  • sed & vim練習

    1、 刪除/etc/grub2.conf文件中所有以空白開頭的行行首的空白字符  2、刪除/etc/fstab文件中所有以#開頭,后面至少跟一個空白字符的行的行首的#和空白字符 3、在/root/install.log每一行行首增加#號 4、在/etc/fstab文件中不以#開頭的行的行首增加#號 5、處理/etc/fstab路徑,使用s…

    學員作品 2016-08-10
  • -pxe

    一. BootStraping(OS install): 1. pxe:preboot excution environment , 即預啟動執行環境,由intel開發,可實現無人值守自動安裝操作系統 ( 依賴于dhcp (dhcpd )服務器與 ftp(lftp) 服務器) 2. pxe 自動化系統安裝的流程: 1. client 從pxe網卡模式啟動, …

    2016-11-18
欧美性久久久久