Linux 批量关机指南
在 Linux 环境中,批量关机通常是指通过一台控制机,远程对多台服务器执行关机指令,由于直接手动登录每台机器效率极低,通常采用 SSH 自动化 的方式来实现。
以下是三种主流的实现方案:
使用 Shell 脚本 (最简单、无需安装额外工具)
如果你不想安装任何新软件,编写一个简单的循环脚本是最直接的方法。
前提条件:
- 必须配置 SSH 免密登录(使用
ssh-copy-id),否则脚本会在每台机器上请求密码,无法实现自动化。 - 执行关机的用户需要具备 sudo 权限,且配置了
sudo免密(或在命令中使用sudo -S配合密码输入)。
操作步骤:
-
创建主机列表文件 (
hosts.txt):
每行写一个 IP 地址或主机名。
168.1.10 192.168.1.11 192.168.1.12 -
编写并执行脚本:
for ip in $(cat hosts.txt); do echo "正在向 $ip 发送关机指令..." # 使用 ssh 执行关机命令 ssh -o ConnectTimeout=5 $ip "sudo shutdown -h now" done
使用 pssh (Parallel SSH) 工具
pssh 是一个专门用于并行执行 SSH 命令的工具,非常适合快速对大量机器执行单一指令。
安装方法:
- Ubuntu/Debian:
sudo apt install pssh - CentOS/RHEL:
sudo yum install pssh
操作步骤:
- 准备主机列表 (
hosts.txt),格式同上。 - 执行并行关机命令:
# -h 指定主机列表,-i 表示在终端显示输出结果 pssh -h hosts.txt -i "sudo shutdown -h now"
优点:
- 速度极快:它是并发执行的,而不是像 Shell 脚本那样一台接一台地等待。
- 管理方便:专门为并行任务设计。
使用 Ansible (企业级标准方案)
如果你管理的是大规模集群,Ansible 是最专业、最强大的选择,它不仅能关机,还能进行复杂的配置管理。
操作步骤:
-
安装 Ansible:
sudo apt install ansible或sudo yum install ansible -
配置 Inventory 文件 (
hosts.ini):[web_servers] 192.168.1.10 192.168.1.11 192.168.1.12
-
执行批量关机命令:
# -m shell 使用 shell 模块,-a 后接命令,-b 表示使用 sudo 权限 ansible web_servers -i hosts.ini -m shell -a "shutdown -h now" -b
优点:
- 极其稳定:具备完善的错误处理机制。
- 高度可扩展:可以轻松按组(Group)管理不同的服务器。
⚠️ 核心注意事项
在执行批量关机操作前,请务必检查以下几点,以防造成生产事故:
- 权限验证:确保你的 SSH 密钥已分发到目标机器,且执行用户拥有执行
shutdown的权限。 - 测试先行:在正式关机前,建议先将命令替换为
uptime或hostname进行测试,确认脚本能否正常连接到所有机器。 - 数据备份:批量关机是危险操作,请确保所有正在运行的服务已安全停止,数据已持久化。
- 网络连接:如果网络不稳定,建议在 SSH 命令中加入
-o ConnectTimeout=5参数,防止脚本卡死在某台无法连接的机器上。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/489665.html



