linux
使用的是基於
執行級
(run-levels)
概念的稱為
sysvinit
的專用啟動工具。它在不同的系統上可能是完全不一樣的, 所以不能認為乙個指令碼在某個
linux
發行版上工作正常。
sysvinit(
從現在開始我們稱之為
"init")
以執行級的模式來工作,一般有7(從
0到6)個執行級
(實際上可以有更多的執行級,但都是用於特殊情況而且一般使用不到。參見
init(8)
以獲得更多資訊
),每個執行級對應於一套設定好的任務,當啟動乙個執行級的時候, 計算機就需要執行相應的任務。預設的執行級是
3,下面是對不同執行級的描述:
0:關閉計算機
1:單使用者模式
2:無網路多使用者模式
3:有網路多使用者模式
4:保留作自定義,否則同執行級3
5:同執行級4,一般用於圖形介面(gui)登入(如x的xdm或kde的kdm)
6:重啟動計算機
用來改變執行級別的命令是init ,在這裡 是目標執行級別。
在 /etc/rc.d 目錄下有很多類似 rc?.d (這裡? 是執行級別的數值)和 rcsysinit.d 的目錄,裡面都包含許多符號鏈結,其中一些以 k 字母開頭,另外一些以 s 字母開頭,這些鏈結名在首字母後面都跟著兩個數字。 這個 k的含義是停止 (kill)乙個服務, s的含義是啟動乙個服務。而數字則確定這些指令碼的啟動順序,從00 到 99(數字越小執行的越早)。當 init 轉換到其它執行級時,一些相應的服務會停止, 而另一些服務則會啟動。
真正的指令碼在 /etc/rc.d/init.d 目錄下,它們完成實際工作, 符號鏈結都是指向它們的。停止指令碼的鏈結和啟動指令碼的鏈結都指向 /etc/rc.d/init.d 目錄下的同乙個指令碼。這是因為呼叫這些指令碼時可以使用不同的引數,例如 start, stop, restart, reload,和 status。當呼叫 k鏈結時,相應的指令碼用 stop引數執行;當呼叫s 鏈結時,相應的指令碼用start 引數執行。
上面的說明有乙個例外,在 rc0.d 和 rc6.d 目錄下以 s 開頭的鏈結不會啟動任何東西,而是用stop引數呼叫,來停止某些服務。 這背後的邏輯是, 當使用者要重啟或關閉系統的時候,不會要啟動什麼服務, 只會要系統停止。
以下是指令碼引數的描述:
start
啟動服務。
stop
停止服務。
restart
關閉服務,然後再啟動。
reload
該服務的配置已更新。如果修改了某個服務的配置檔案,又不必重啟這個服務的時候,可以使用這個引數
status
顯示服務的狀態,如果服務正在執行,會顯示該服務程序的
pid。
您可以自由修改啟動程序工作的方式
。我們這裡給出的檔案只是它們怎樣工作的乙個示例而已。
linux
的開機的整個過程如下:
打
開電腦電
源,
開
始
讀
取
bios
並進
行主
機
的自我
測試
;
透過bios取得第乙個可開機裝置,讀取主要開機區(mbr)取得開機管理程式;
透過開機管理程式的設定,取得kernel並載入記憶體且偵測系統硬體;
核心主動呼叫init程式;
init程式開始執行系統初始化(/etc/rc.d/rc.sysinit)
執行/etc/init.d/functions,設定環境變數等。
依據init的設定進行daemonstart (/etc/rc.d/rc[0-6].d/*)
依次執行指令碼,啟動服務。關機時依次關閉服務。
載入本機設定(/etc/rc.d/rc.local)
/etc/profile
檔案。這個檔案是系統啟動時,任何使用者登入時執行的檔案。任何使用者登入前,
root
使用者也會執行一遍。
~/.bash_profile
檔案。這個檔案每個使用者都有。它在使用者登入時自動執行,擁有使用者的許可權。它
export
的環境變數對該使用者隨後啟動的程序都有效。
因此,如果使用者需要開機自動以
root
許可權執行一些指令碼,那麼最好的方法是編輯
/etc/rc.d/rc.local
檔案。
如果每乙個使用者登入時都應該執行的指令碼,如設定一些環境變數。那麼應該修改
/etc/profile
檔案。
如果某乙個特定使用者登入時應該執行特定的指令碼,如設定該使用者特定的環境變數,應該修改
~/.bash_profile
檔案。
Linux啟動和關閉時自動執行的所有指令碼檔案
linux 使用的是基於 執行級 run levels 概念的稱為 sysvinit 的專用啟動工具。它在不同的系統上可能是完全不一樣的,所以不能認為乙個指令碼在某個 linux 發行版上工作正常。sysvinit 從現在開始我們稱之為 init 以執行級的模式來工作,一般有 7 從 0 到 6 個...
jboss 自動啟動關閉時關閉dos視窗
jboss 啟動 直接執行 run.bat 就可以了。jboss 服務停止,需要 s 因此不能直接執行shutdown.bat 因此在科工中我從新寫了乙個關閉bat。e cd jboss 4.0.5.ga bin shutdown.bat s 將這個bat命名為 closs.bat e 是jboss...
Linux啟動時自動執行指令碼
系統是centos7.5 64位 1.chmod x etc rc.d rc.local 賦予執行許可權 chmod x etc rc.d rc.local vim etc rc.d rc.local root startenv.sh在這個檔案裡編寫需要執行的命令.我這裡是需要啟動docker服務,...