You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Ubuntu服务器批量升级内核的通用脚本需求问询

Ubuntu服务器批量升级内核的通用脚本需求问询

Hey there! 刚接触Ubuntu就要处理10台服务器的内核升级,还顶着漏洞扫描的压力,确实有点头大对吧?我来给你捋捋可行的方案,尽量让操作简单靠谱些。

首先得明确:你们的服务器跑的是Ubuntu 20.04.6,内核是5.15.0-1083-aws,这是AWS定制的内核分支,升级的时候得认准这个系列,别装成通用的Ubuntu内核了,不然可能出兼容性问题。

单台服务器的基础升级步骤(先在一台测试机上验证!)

先在一台非生产的测试服务器上跑一遍,确认没问题再批量操作:

  1. 更新系统源和已安装包:
    sudo apt update && sudo apt upgrade -y
    
  2. 安装最新的AWS内核包(Ubuntu 20.04的AWS内核属于focal-updates仓库):
    sudo apt install -y linux-image-aws linux-headers-aws
    
    这个命令会自动拉取该系列下的最新内核版本,替换旧的AWS内核。
  3. 更新GRUB引导配置(确保新内核成为默认启动项):
    sudo update-grub
    
  4. 重启服务器生效:
    sudo reboot
    
  5. 重启后验证内核版本:
    uname -r
    
    应该会显示新的5.15.0-xxx-aws版本号。

批量升级的脚本思路(基于SSH免密登录)

如果已经给这10台服务器配置了SSH免密登录(没配置的话先搞定这个,不然批量操作会很痛苦),可以写个简单的bash脚本批量执行:

#!/bin/bash
# 把你的服务器IP列表放到这个数组里
SERVERS=(
    "192.168.1.10"
    "192.168.1.11"
    # 继续添加剩下的服务器IP
)

for SERVER in "${SERVERS[@]}"
do
    echo "===== 开始升级服务器 $SERVER ====="
    # 远程执行升级命令
    ssh -t ubuntu@$SERVER "sudo apt update && sudo apt upgrade -y && sudo apt install -y linux-image-aws linux-headers-aws && sudo update-grub"
    # 询问是否重启(或者直接自动重启,根据你的需求调整)
    read -p "服务器 $SERVER 升级完成,是否立即重启?(y/n): " REBOOT
    if [ "$REBOOT" = "y" ]; then
        ssh -t ubuntu@$SERVER "sudo reboot"
        echo "服务器 $SERVER 已发送重启命令"
    fi
    echo "===== 服务器 $SERVER 升级流程结束 ====="
    echo ""
done

重要注意事项

  • 先测试!先测试!先测试! 一定要找一台非生产的服务器先跑一遍整个流程,确认升级后应用正常、内核启动没问题,再批量操作。
  • 备份数据:虽然内核升级一般不会丢数据,但稳妥起见,升级前确保重要数据有备份。
  • 应用兼容性:有些老应用可能依赖特定内核版本,升级前最好确认你们的业务应用不会受新内核影响。
  • 重启时机:生产服务器尽量选业务低峰期重启,避免影响业务。

备注:内容来源于stack exchange,提问作者BigDaddySlat

火山引擎 最新活动