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

相关内容