求无需重启的Yum更新Shell脚本(排除内核及需重启重要包)
Yum更新Shell脚本(无需重启,排除内核及需重启的关键包)
嘿,作为Linux脚本新手,你这个需求太贴合日常运维场景了——既要保持系统软件包新鲜,又不想因为更新内核或核心组件被迫打断业务。我给你准备了一份实用脚本,还会把每个细节拆解清楚,方便你理解和调整:
#!/bin/bash # 定义需要排除的软件包(内核及需重启的核心组件) EXCLUDED_PACKAGES="kernel* glibc* systemd* dracut* initramfs*" # 先预览可更新的包(排除指定项),让你提前确认内容 echo "=== 即将更新的软件包(已排除内核及核心重启组件) ===" yum check-update --exclude=$EXCLUDED_PACKAGES # 加入交互式确认,防止误操作 read -p "确认要执行本次更新吗?(y/N): " CONFIRM if [[ $CONFIRM =~ ^[Yy]$ ]]; then echo "=== 开始执行更新,请稍候 ===" yum update -y --exclude=$EXCLUDED_PACKAGES # 更新完成后的提示 echo "=== 更新完成!已自动跳过内核、glibc、systemd等需重启的组件 ===" else echo "更新已取消,系统保持当前状态" fi
脚本关键细节说明:
- 排除包列表:
EXCLUDED_PACKAGES里的都是更新后必然需要重启系统的核心组件:kernel*:所有内核相关包,新内核必须重启才能加载生效glibc*:GNU C库,系统最底层的依赖库,更新后绝大多数进程都需要重启才能适配systemd*:系统初始化管理器,更新后必须重启才能启用新版本dracut*和initramfs*:与内核镜像生成相关的工具,只有更新内核时才需要同步更新
yum check-update:先列出待更新包的预览,让你提前确认更新范围,避免意外- 交互式确认:加了确认步骤,防止手滑误执行更新
额外实用小贴士:
- 之后如果计划重启系统了,可以手动执行
yum update -y来更新所有包(包括内核) - 你可以根据自己的系统需求,调整
EXCLUDED_PACKAGES里的内容,比如添加其他你暂时不想更新的包 - 执行脚本前记得给它加执行权限:
chmod +x update_without_reboot.sh
内容的提问来源于stack exchange,提问作者Gerald Johnson
相关产品推荐
相关产品推荐

