更新 hy2.sh
This commit is contained in:
38
hy2.sh
38
hy2.sh
@@ -66,18 +66,50 @@ get_public_ips() {
|
|||||||
printf '%s|%s\n' "$ipv4" "$ipv6"
|
printf '%s|%s\n' "$ipv4" "$ipv6"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wait_for_apt_lock() {
|
||||||
|
local timeout="${1:-300}"
|
||||||
|
local waited=0
|
||||||
|
|
||||||
|
while pgrep -x apt >/dev/null 2>&1 \
|
||||||
|
|| pgrep -x apt-get >/dev/null 2>&1 \
|
||||||
|
|| pgrep -x dpkg >/dev/null 2>&1 \
|
||||||
|
|| pgrep -f unattended-upgrades >/dev/null 2>&1; do
|
||||||
|
if (( waited == 0 )); then
|
||||||
|
yellow "检测到 APT/DPKG 正被其他进程占用,正在等待..."
|
||||||
|
ps -ef | grep -E 'apt|apt-get|dpkg|unattended' | grep -v grep || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( waited >= timeout )); then
|
||||||
|
red "等待 APT 锁超时(${timeout} 秒)。"
|
||||||
|
if confirm_yn "是否继续等待?"; then
|
||||||
|
waited=0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 2
|
||||||
|
waited=$((waited + 2))
|
||||||
|
done
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
apt_update_and_install_base() {
|
apt_update_and_install_base() {
|
||||||
if ! confirm_yn "即将执行 apt update 并安装基础依赖 curl sed ufw jq openssl,是否继续?"; then
|
if ! confirm_yn "即将执行 apt update 并安装基础依赖 curl sed ufw openssl,是否继续?"; then
|
||||||
red "已取消。"
|
red "已取消。"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
blue "==> 更新 APT 软件库"
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
blue "==> 更新 APT 软件库"
|
||||||
|
wait_for_apt_lock 300 || { red "APT 被占用,无法继续。"; exit 1; }
|
||||||
apt update -y
|
apt update -y
|
||||||
|
|
||||||
blue "==> 安装基础依赖"
|
blue "==> 安装基础依赖"
|
||||||
apt install -y curl sed ufw jq openssl
|
wait_for_apt_lock 300 || { red "APT 被占用,无法继续。"; exit 1; }
|
||||||
|
apt install -y curl sed ufw openssl
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_existing_firewalls() {
|
disable_existing_firewalls() {
|
||||||
|
|||||||
Reference in New Issue
Block a user