Linux

作業系統如何知道將哪個參數傳遞給 /etc/init.d/ ?

  • June 28, 2012

我使用 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。

引用自:https://serverfault.com/questions/402907