如何編寫對 Internet 可用性的啟動依賴項?
我的 Raspberry Pi (~ Debian) 上的一些服務依賴於 Internet 的可用性(尤其是
ntpd
,出於神秘的原因)。具體來說,網路設備或鏈路的可用性是不夠的。當
/etc/init.d/ntp
我看到### BEGIN INIT INFO # Provides: ntp # Required-Start: $network $remote_fs $syslog # Required-Stop: $network $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Start NTP daemon ### END INIT INFO
我相信這意味著
ntp
取決於$network
能夠開始。我找到了一個參考,/etc/insserv.conf
但它並沒有說明設置它的實際需要什麼:# # Low level networking (ethernet card) # $network +networking +ifupdown
**Q1:**元素究竟是如何
$network
定義的?+networking +ifupdown
(這樣我就可以在將網路聲明為“啟動”之前對其進行修改並嘗試訪問實際主機)**Q2:**如果網路條件不滿足,
ntp
啟動會延遲還是會失敗?
$network 在哪裡定義?
這是一個很好的問題,我在這裡概括了它。
$network 究竟是如何通過 +networking +ifupdown 元素定義的?
AFAICT 它不是由它定義的,它定義了哪些服務必須(可選地)還聲明設施具有的任何依賴項(?? - 請參閱我在上面發布和連結的問題)。來自
man insserv
:insserv 在配置文件 /etc/insserv.conf 中掃描系統設施
$$ … $$這種系統設施後面的所有名稱都將聲明該設施所需的依賴關係。 $$ … $$以“+”號開頭的名稱被標記為可選。
實際上,在 raspbian 上
/etc/init.d/networking
(通過/etc/rcS.d
啟動,無論執行級別如何都在啟動時執行)不包括作為先決條件$network
,儘管其他一些服務(例如ntp
)可以。Q2:如果網路條件不滿足,ntp啟動會延遲還是會失敗?
這些先決條件(以及 INIT INFO 塊中的其他內容)僅用於設置和配置
/etc/rcN.d
目錄中的腳本連結,例如,當您執行時update-rc.d
(這是insserv
. 換句話說,它們在實際執行期間不使用。因此,如果處於您的預設執行級別,則無論在啟動期間如何執行(除了一些先前的致命錯誤)S02ntp
,它都會執行。