使用 init.d 重新啟動時更新

使用 init.d 重新啟動時更新

我創建了一個腳本來添加一堆軟體包並在全新安裝時更新系統。這是我的 init.d 腳本中給我帶來麻煩的相關部分:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          update
# Required-Start:    $local_fs $syslog $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       Update my system
### END INIT INFO

. /lib/lsb/init-functions

case "$1" in
  start)
    log_daemon_msg "Starting update"

    apt-get --assume-yes update &&
    apt-get --assume-yes dist-upgrade

    log_end_msg $?
    ;;
  *)
    echo "Usage: $0 start" >&2
    exit 2
    ;;
esac

exit 0

我使腳本可執行並使用sudo update-rc.d update defaults.當我在重新啟動後檢查它時sudo service update status,我發現所有軟體包存儲庫都無法解析:

W: Failed to fetch http://.../Release.gpg  Temporary failure resolving '...'
W: Some index files failed to download. They have been ignored, or old ones used instead.

腳本init.d在這裡結束code=exited。但是,sleep 10在運行命令之前向腳本中添加 aapt可以解決我的問題。我以為添加$network到我的# Required-Start清單中就可以自行解決這個問題。有沒有更好的方法來處理這個問題?

如果這有什麼不同的話,我會繼續運行它Raspian Jessie 2016-03-18,但我有一種感覺,它不會。

答案1

在執行更新服務之前,作為要求的一部分,添加一兩個以上的服務在網路服務之後啟動,這應該會增加更有效率的延遲,而不是在腳本中添加 sleep 10。

相關內容