Debian

如何編寫對 Internet 可用性的啟動依賴項?

  • April 9, 2014

我的 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,它都會執行。

引用自:https://unix.stackexchange.com/questions/123868