linux中rc.d目錄下的文件


參考
 
 
控制腳本目錄/etc/rc.d,該目錄下存在各個運行級別的腳本文件,以下是rhel-server-6.3為例的查詢結果:
需要注意,在不同的linux版本中,這些目錄並不完全相同,知道原理就好
 
[root@localhost etc]# cd /etc/rc.d
[root@localhost rc.d]# ls
init.d  rc  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rc.local  rc.sysinit
[root@localhost rc.d]# cd rc0.d
[root@localhost rc0.d]# ls -l
總用量 0
lrwxrwxrwx. 1 root root 20 9月   7 19:53 K01certmonger -> ../init.d/certmonger
lrwxrwxrwx. 1 root root 16 9月   7 19:59 K01smartd -> ../init.d/smartd
lrwxrwxrwx. 1 root root 22 9月   7 19:53 K02avahi-daemon -> ../init.d/avahi-daemon
 
 
/etc/rc.d/rc0.d~/etc/rc.d/rc6.d
這些文件夾分別包含每個運行等級對應的init腳本。在實際使用中,它們一般通過符號鏈接到/etc/init.d文件夾下的實際文件。不過要注意的是,這些文件夾下的init腳本都有一些特別的名字,命名都以S(start)、K(kill)或D(disable)開頭, 后面跟一個數字。不同的運行等級所運行的腳本是不同的,可能在等級1,2是運行的,而在等級3是要關閉的
 
a. 當init進入一個運行等級的時候,它會按照數字順序運行所有以K開頭的腳本並傳入stop參數,除非對應的init腳本在前一個運行等級中沒有啟動。
b. 然后init按照數字順序運行所有以S開頭的腳本並傳入start參數。
c. 任何以D開頭的init腳本都會被忽略—這讓你可以在指定的運行等級禁止一個腳本,或者你也可以僅僅移除全部符號鏈接。
所以如果你有兩個腳本,S01foo和S05bar,init首先會運行S01foo start,當它進入特定的運行等級后再執行S05bar start。
 
傳S時相當於執行了/etc/rc.d/init.d/xxx start這條命令,當然K就相當於/etc/rc.d/init.d/xxx stop了。
 
以rc0.d目錄下的配置文件為例,rc0.d調用了/etc/rc.d/init.d目錄下的程序。
 
/etc/rc.d/init.d
各種服務器和程序的二進制文件存放目錄。
該文件夾包含所有服務在各個運行等級中的全部啟動腳本。一般來說,它們都是標准的shell腳本,遵守最基本的標准。 每個腳本最少接受兩個參數start和stop,
 
/etc/rc.d/rc.local
並非所有的發行版都使用了rc.local,通常它是一個留給用戶修改的shell腳本。一般會在init進程結束的時候運行它,所以你可以在這里放一些想要運行的額外腳本,而不用再創建自己的init腳本。
 
除了直接調用腳本外(如/etc/rc.d/init.d/xinetd),還可以用service命令來控制init.d目錄下的服務,
 
 
 
redhat的系統啟動方式和執行次序是:
1)加載內核
2)執行init程序
3)/etc/rc.d/rc.sysinit                    # 由init執行的第一個腳本
4)/etc/rc.d/rc $RUNLEVEL           # $RUNLEVEL為缺省的運行模式
5)/etc/rc.d/rc.local
6)/sbin/mingetty # 等待用戶登錄


免責聲明!

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



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