Linux啟動和關閉時自動執行的所有指令碼檔案

2021-05-23 07:29:30 字數 4018 閱讀 7956

linux

使用的是基於

執行級

(run-levels)

概念的稱為

sysvinit

的專用啟動工具。 它在不同的系統上可能是完全不一樣的, 所以不能認為乙個指令碼在某個

linux

發行版上工作正常。

sysvinit(

從現在開始我們稱之為

"init")

以執行級的模式來工作,一般有

7 (從

0 到

6)個執行級

(實際上可以有更多的執行級,但都是用於特殊情況而且一般使用不到。 參見

init(8)

以獲得更多資訊

),每個執行級對應於一套設定好的任務, 當啟動乙個執行級的時候, 計算機就需要執行相應的任務。 預設的執行級是

3,下面是對不同執行級的描述:

0:關閉計算機

1:單使用者模式

2:無網路多使用者模式

3:有網路多使用者模式

4:保留作自定義,否則同執行級

5:同執行級4,一般用於圖形介面(gui)登入(xxdmkdekdm) 

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的設定進行daemon start (/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服務,...