本文目录导读:

当然可以!实用脚本完全可以批量重启服务、服务器、容器或应用,关键在于明确你的“重启”对象是什么(是远程服务器、Docker容器、还是同一台机器上的多个服务?)。
以下针对最常见的三种场景提供实用脚本(基于 Linux/Bash):
批量重启远程服务器(通过 SSH)
场景:你有 10 台 Web 服务器(ip.txt 中列出),需要依次重启它们。
核心注意点:避免同时重启导致业务全挂,建议串行执行。
#!/bin/bash
# 文件名: batch_reboot_remote.sh
# 服务器列表文件(每行一个 IP 或主机名)
SERVER_LIST="ip.txt"
# SSH 用户名
USER="root"
# SSH 私钥路径(建议使用密钥,避免交互输入密码)
KEY_PATH="/home/youruser/.ssh/id_rsa"
echo "开始批量重启远程服务器..."
# 逐台服务器执行重启命令
while IFS= read -r server; do
echo "正在重启: $server"
# 使用 timeout 防止 SSH 挂住(重启后连接会断开,脚本正常返回)
timeout 30 ssh -i "$KEY_PATH" -o StrictHostKeyChecking=no "$USER@$server" \
"sudo reboot" 2>&1
if [ $? -eq 124 ]; then
echo " ✓ $server 重启命令已发送(连接正常断开)"
else
echo " ✗ $server 重启失败,请检查网络或权限"
fi
# 等待 10 秒再操作下一台,避免雪崩
sleep 10
done < "$SERVER_LIST"
echo "批量重启命令执行完毕!"
ip.txt 示例:
168.1.10
168.1.11
db-server.example.com
批量重启本地机器上的多个服务(systemd)
场景:你需要重启 Nginx、MySQL、Redis 等多个服务。
优势:完全串行,可精确控制顺序和状态。
#!/bin/bash
# 文件名: batch_restart_services.sh
# 服务列表(按依赖顺序排列)
SERVICES=("mysql" "redis" "nginx" "php-fpm")
echo "开始批量重启服务..."
for svc in "${SERVICES[@]}"; do
echo -n "正在重启 $svc ... "
sudo systemctl restart "$svc" 2>/dev/null
if sudo systemctl is-active --quiet "$svc"; then
echo "✓ 成功"
else
echo "✗ 失败!请检查 journalctl -u $svc"
fi
# 给服务启动留出缓冲时间
sleep 3
done
echo "所有服务重启完成。"
批量重启 Docker 容器
场景:所有容器名称包含 web 关键字,需要滚动重启。
推荐方法:先找到容器,再逐个安全重启。
#!/bin/bash
# 文件名: batch_restart_containers.sh
# 过滤关键字(支持正则)
KEYWORD="web"
# 等待时间
WAIT_SECONDS=15
echo "查找名称包含 '$KEYWORD' 的容器..."
containers=$(docker ps --filter "name=$KEYWORD" --format "{{.Names}}")
if [ -z "$containers" ]; then
echo "未找到符合条件的运行中的容器。"
exit 1
fi
echo "找到以下容器:"
echo "$containers"
echo "开始滚动重启..."
for container in $containers; do
echo -n "正在重启 $container ... "
# 执行重启
docker restart "$container" &>/dev/null
if [ $? -eq 0 ]; then
echo "✓"
else
echo "✗ 失败"
continue
fi
# 等待指定秒数,再重启下一个
sleep "$WAIT_SECONDS"
done
echo "所有容器重启完成。"
更极致的:并行 + 健康检查 + 日志(高级版)
如果你的服务数量非常多(100+),且需要“快速 + 安全”,可以使用 Ansible 或 Parallel SSH (pssh) + 健康检查脚本。
这里提供一个 自制的快速并行脚本(需谨慎使用,仅适用于不依赖顺序的场景):
#!/bin/bash
# 并行重启(需先确认业务能承受)
# 依赖: parallel (apt install parallel)
SERVER_LIST="ip.txt"
USER="root"
SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=10"
restart_one() {
local ip=$1
ssh $SSH_OPTS "$USER@$ip" "sudo reboot" 2>&1
echo "$ip: 重启命令已发送"
}
export -f restart_one
export USER SSH_OPTS
cat "$SERVER_LIST" | parallel -j 5 restart_one
# 控制同时最多 5 台重启(-j 5)
⚠️ 重要安全建议
- 一定穿行:除非你非常了解业务架构,否则不要并行重启所有服务器/容器(否则你的系统可能会瞬间雪崩)。
- 先 test:用一个
echo或--dry-run模式先验证脚本会操作哪些对象。 - 备份配置文件:重启前最好执行自动备份(
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak)。 - 记录日志:给脚本加入
>> /var/log/restart.log 2>&1。 - 权限管理:建议使用普通用户 + sudo,避免 root 权限滥用。
- 重启远程服务器 → SSH + 串行循环
- 重启本地服务 → systemctl 循环
- 重启 Docker 容器 → docker restart + 关键字过滤
- 超大规模 → 用 Ansible 剧本(playbook)或 parallel 工具
如果你有更具体的场景(用哪个系统?是重启服务还是整个机器?),告诉我,我可以帮你定制脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播