Linux
作業系統如何知道將哪個參數傳遞給 /etc/init.d/ ?
我使用 linux 已經有一段時間了,但是以一種相當簡單的方式。
我知道 init.d 中的腳本是在作業系統啟動時執行的,但它究竟是如何工作的?
作業系統如何知道將哪個參數傳遞給腳本?
要啟動 apache,我會執行 sudo /etc/init.d/apache2 start。如果我執行 sudo /etc/init.d/apache2 它沒有開始就無法工作。os 是如何傳遞到腳本的?
根據您的 Linux 發行版和發行版,最終 sysvinit 腳本(在 中的那些腳本
/etc/init.d/
)通常從存在於/etc/rc[0-6S].d
, by中的符號連結執行/etc/init.d/rc
。在 Ubuntu 下,您要麼使用 old-style
sysvinit
,要麼使用最近的upstart
. 在 upstart 管理目錄 (/etc/events.d/
) 下,您會發現回退到/etc/init.d/rc
呼叫的傳統模式。否則,/etc/init.d/rc
通過 為每個執行級別呼叫/etc/inittab
。如果您檢查 的邏輯
/etc/init.d/rc
,您會發現它根據執行級別(0
&S
無條件停止)或腳本前綴(S[0-9][0-9]*
腳本啟動,K[0-9][0-9]*
(kill)腳本停止)定義了操作。執行級別目錄中的腳本編號(例如:)/etc/rc1.d/
決定了腳本停止或啟動的順序。殺死腳本首先執行,然後啟動腳本。有關這方面的更多資訊,請研究 sysvinit 和 upstart。