Ubuntu服务器批量升级内核的通用脚本需求问询
Ubuntu服务器批量升级内核的通用脚本需求问询
Hey there! 刚接触Ubuntu就要处理10台服务器的内核升级,还顶着漏洞扫描的压力,确实有点头大对吧?我来给你捋捋可行的方案,尽量让操作简单靠谱些。
首先得明确:你们的服务器跑的是Ubuntu 20.04.6,内核是5.15.0-1083-aws,这是AWS定制的内核分支,升级的时候得认准这个系列,别装成通用的Ubuntu内核了,不然可能出兼容性问题。
单台服务器的基础升级步骤(先在一台测试机上验证!)
先在一台非生产的测试服务器上跑一遍,确认没问题再批量操作:
- 更新系统源和已安装包:
sudo apt update && sudo apt upgrade -y - 安装最新的AWS内核包(Ubuntu 20.04的AWS内核属于focal-updates仓库):
这个命令会自动拉取该系列下的最新内核版本,替换旧的AWS内核。sudo apt install -y linux-image-aws linux-headers-aws - 更新GRUB引导配置(确保新内核成为默认启动项):
sudo update-grub - 重启服务器生效:
sudo reboot - 重启后验证内核版本:
应该会显示新的uname -r5.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




