From 52397813cebc9f77fe0a0221c63cfc870760cad2 Mon Sep 17 00:00:00 2001 From: mini2024 Date: Sat, 22 Mar 2025 17:34:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20upgrade.sh=20=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=EF=BC=8C=E9=87=8D=E6=9E=84=E9=87=8D=E5=90=AF=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E9=80=BB=E8=BE=91=E5=B9=B6=E6=94=B9=E8=BF=9B=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debian/upgrade.sh | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/debian/upgrade.sh b/debian/upgrade.sh index a54e44a..16b11fc 100644 --- a/debian/upgrade.sh +++ b/debian/upgrade.sh @@ -31,44 +31,39 @@ systemctl --failed apt -qq install needrestart -y ############################################ -# 设置变量标记是否需要重启 +# 初始化变量 NEEDS_REBOOT=0 REASONS="" -# 方法1: 检查 reboot-required 文件 -if [ -f /var/run/reboot-required ]; then - NEEDS_REBOOT=1 - - # 如果有详细信息文件,显示需要重启的包 - if [ -f /var/run/reboot-required.pkgs ]; then - REASONS="需要重启的包:\n$(cat /var/run/reboot-required.pkgs)" +# 函数: 添加重启原因 +add_reason() { + if [ -z "$REASONS" ]; then + REASONS="$1" else - REASONS="系统标记为需要重启" + REASONS="$REASONS\n$1" fi -fi - -# 方法2: 检查正在运行的内核与已安装的最新内核是否不同 -CURRENT_KERNEL=$(uname -r) -LATEST_KERNEL=$(dpkg -l 'linux-image-*' | grep ^ii | grep -v "${CURRENT_KERNEL}" | sort -V | tail -n 1 | awk '{print $2}' | sed 's/linux-image-//') - -if [ ! -z "$LATEST_KERNEL" ] && [ "$LATEST_KERNEL" != "$CURRENT_KERNEL" ]; then NEEDS_REBOOT=1 - REASONS="${REASONS}\n已安装新内核: ${LATEST_KERNEL},当前运行内核: ${CURRENT_KERNEL}" -fi +} -# 方法3: 使用 needrestart 工具(如果已安装) -if command -v needrestart &> /dev/null; then - if needrestart -b | grep -q "NEEDRESTART-KSTA: 1"; then - NEEDS_REBOOT=1 - REASONS="${REASONS}\nneedrestart 工具表明需要内核重启" +echo "检查系统重启状态..." + +# 方法1: 检查 reboot-required 文件 (最可靠的方法) +if [ -f /var/run/reboot-required ]; then + add_reason "发现 /var/run/reboot-required 文件" + + # 如果存在详细信息文件,显示需要重启的包 + if [ -f /var/run/reboot-required.pkgs ]; then + add_reason "需要重启的包:\n$(cat /var/run/reboot-required.pkgs)" fi fi # 输出结果 if [ $NEEDS_REBOOT -eq 1 ]; then - echo -e "系统需要重启\n原因:\n${REASONS}" + echo -e "\033[1;31m系统需要重启\033[0m" + echo -e "\033[1;33m原因:\033[0m" + echo -e "$REASONS" exit 1 else - echo "系统不需要重启" + echo -e "\033[1;32m系统不需要重启\033[0m" exit 0 fi \ No newline at end of file