linux 啟動 shell程序由來

2021-06-21 09:28:58 字數 820 閱讀 8204

linux建立新程序的過程。

系統允許乙個程序建立新程序,新程序即為子程序,子程序還可以建立新的子程序,形成程序樹結構模型。整個linux系統的所有程序也是乙個樹形結構。樹根是系統自動構造的,即在核心態下執行的0號程序,它是所有程序的祖先。由0號程序建立1號程序(核心態),1號負責執行核心的部分初始化工作及進行系統配置,並建立若干個用於快取記憶體和虛擬主存管理的核心執行緒。隨後,1號程序呼叫execve()執行可執行程式init,並演變成使用者態1號程序,即init程序。它按照配置檔案/etc/initab的要求,完成系統啟動工作,建立編號為1號、2號...的若干終端註冊程序getty。每個getty程序設定其程序組標識號,並監視配置到系統終端的介面線路。當檢測到來自終端的連線訊號時,getty程序將通過函式execve()執行註冊程式login,此時使用者就可輸入註冊名和密碼進入登入過程,如果成功,由login程式再通過函式execv()執行shell,該shell程序接收getty程序的pid,取代原來的getty程序。再由shell直接或間接地產生其他程序。

上述過程可描述為:0號程序->1號核心程序->1號核心執行緒->1號使用者程序(init程序)->getty程序->shell程序

注意,上述過程描述中提到:1號核心程序呼叫執行init並演變成1號使用者態程序(init程序),這裡前者是init是函式,後者是程序。兩者容易混淆,區別如下:

1.init()函式在核心態執行,是核心**

2.init程序是核心啟動並執行的第乙個使用者程序,執行在使用者態下。

3.init()函式呼叫execve()從檔案/etc/inittab中載入可執行程式init並執行,這個過程並沒有使用呼叫do_fork(),因此兩個程序都是1號程序。

linux啟動新程序

說到程序,首先要明確的乙個概念就是什麼是程序,程序是 a program in execution 乙個程序由如下元素組成 程式的上下文 context 它是程式當前執行的狀態 程式的當前執行目錄 程式訪問的檔案和目錄 程式的信任狀態或者說訪問許可權,比如它的檔案模式和所有權 記憶體和其他分配給程序...

Linux如何檢視程序 殺死程序 啟動程序

1.檢視程序 ps命令 下面的命令還沒實踐,僅僅供你參考 可以用man ps檢視格式,只不過是乙個小工具而已!ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。ps a 顯示所有程式。ps c 列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,引數或常駐服務的標示。ps e 此引數的效...

linux程式守護程序(shell)

使用shell每秒檢測一次程式是否在執行,如果沒有執行則自動啟動程式 bin bash 配置檔案路徑 configfile 1 config settings.ini slash restartlog daemon shopt s expand aliases alias datetime date...