您可以编写以下Shell脚本来实现您的需求:
#!/bin/bash
# 等待10秒
echo "等待10秒后执行mariadb升级..."
sleep 10
# 执行mariadb升级命令并输出日志到控制台
echo "开始执行mariadb升级..."
docker exec -it mariadb_container mariadb-upgrade -uroot -p"OceanXECM!" 2>&1
# 检查命令执行结果
if [ $? -eq 0 ]; then
echo "mariadb升级执行成功!"
else
echo "mariadb升级执行失败!"
exit 1
fi
如果您不知道容器名称,可以使用以下版本的脚本:
#!/bin/bash
# 等待10秒
echo "等待10秒后执行mariadb升级..."
sleep 10
# 获取mariadb容器名称(假设只有一个mariadb容器)
CONTAINER_NAME=$(docker ps --filter "name=mariadb" --format "{{.Names}}")
# 如果没有找到特定名称的容器,尝试查找包含mariadb的容器
if [ -z "$CONTAINER_NAME" ]; then
CONTAINER_NAME=$(docker ps --format "{{.Names}}" | grep -i mariadb | head -n 1)
fi
# 如果仍然没有找到容器,退出脚本
if [ -z "$CONTAINER_NAME" ]; then
echo "错误:未找到mariadb容器!"
exit 1
fi
echo "找到mariadb容器: $CONTAINER_NAME"
# 执行mariadb升级命令并输出日志到控制台
echo "开始执行mariadb升级..."
docker exec -it "$CONTAINER_NAME" mariadb-upgrade -uroot -p"OceanXECM!" 2>&1
# 检查命令执行结果
if [ $? -eq 0 ]; then
echo "mariadb升级执行成功!"
else
echo "mariadb升级执行失败!"
exit 1
fi
使用说明:
- 将上述代码保存为一个文件,例如
upgrade_mariadb.sh - 给脚本执行权限:
chmod +x upgrade_mariadb.sh - 运行脚本:
./upgrade_mariadb.sh
注意事项:
2>&1将标准错误输出重定向到标准输出,确保所有日志都显示在控制台- 脚本会等待10秒后执行升级命令
- 第二个版本的脚本会自动查找mariadb容器,如果您的容器名称不是默认的,请修改相应的过滤条件
- 确保docker守护进程正在运行,并且您有执行docker命令的权限
- 如果您的密码中包含特殊字符,请确保正确转义

1641

被折叠的 条评论
为什么被折叠?



