同步操作将从 飞致云/SQLBot 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/bin/bashaction=1ドルtarget=2ドルSQLBOT_BASE=/optSQLBOT_RUNNING_BASE=${SQLBOT_BASE}/sqlbotSQLBOT_LOG_PATH=${SQLBOT_RUNNING_BASE}/data/sqlbot/logscompose_files="-f docker-compose.yml"compose_cmd="docker-compose"current_version=""set -asource ${SQLBOT_RUNNING_BASE}/.envset +aexport COMPOSE_HTTP_TIMEOUT=180docker-compose version >/dev/null 2>&1if [ $? -ne 0 ]; thendocker compose version >/dev/null 2>&1if [ $? -ne 0 ]; thencompose_cmd="docker compose"fififunction usage() {echo "SQLBot 控制脚本"echoecho "Usage: "echo " ./sctl [COMMAND] [ARGS...]"echo " ./sctl --help"echoecho "Commands: "echo " status 查看 SQLBot 服务运行状态"echo " start 启动 SQLBot 服务"echo " stop 停止 SQLBot 服务"echo " restart 重启 SQLBot 服务"echo " reload 重载 SQLBot 服务"echo " clear-images 清理 SQLBot 旧版本的相关镜像"echo " clear-logs 清理 SQLBot 历史日志"echo " version 查看 SQLBot 版本"}function _healthcheck() {echocontainer_name=$(grep "container_name" $SQLBOT_RUNNING_BASE/docker-compose.yml | awk -F': ' '{print 2ドル}')sleep 1if [ -z '$(docker ps --filter "name=^$container_name$" -q)' ];thenecho "未找到容器 $container_name。"exit 1fifor b in {1..90}dosleep 1read status healthy<<<$(docker inspect $container_name --format '{{.State.Status}} {{.State.Health.Status}}')if [[ "$healthy" == "starting" ]];thenprintf "\rSQLBot 服务状态 : 正在启动 ... %3ds" $belif [[ "$status" == "running" ]] && [[ "$healthy" == "healthy" ]];thenprintf "\rSQLBot 服务状态 : 正常运行 "echoreturn;elseechoecho -e "SQLBot 服务状态 : 0円33[31m无法访问0円33[0m"exit 1fidoneechoecho "【警告】服务在等待时间内未完全启动!请稍后使用 sctl status 检查服务运行状况。"echo}function _get_current_version() {sqlbot_current_version=$(grep "^ image:.*sqlbot:" ${SQLBOT_RUNNING_BASE}/docker-compose.yml | awk -F'sqlbot:' '{print 2ドル}')if test -z $sqlbot_current_version; thenecho "获取当前版本失败,请检查当前版本是否正确"exit 1ficurrent_version=$sqlbot_current_version}function status() {echoecho "SQLBot 容器运行状态"cd ${SQLBOT_RUNNING_BASE}${compose_cmd} ${compose_files} psechodocker_root_dir=$(docker info | grep "Docker Root Dir" | awk -F': ' '{print 2ドル}')echo "Docker 目录及文件大小 : "du -sh $docker_root_direchoecho "Docker 目录所在磁盘使用情况 : "df -H $docker_root_direchoecho "日志文件大小 : "du -Sh ${SQLBOT_LOG_PATH}echoecho "SQLBot 运行目录及文件大小 : "du -sh ${SQLBOT_BASE}echoecho "SQLBot 运行目录使用情况 : "df -H ${SQLBOT_BASE}_healthcheck}function start() {echocd ${SQLBOT_RUNNING_BASE}${compose_cmd} ${compose_files} up -d_healthcheck}function stop() {echocd ${SQLBOT_RUNNING_BASE}${compose_cmd} ${compose_files} down -v ${target}}function restart() {stopstart}function reload() {start}function version() {echo_get_current_versionecho "current version is $current_version"}function clear_images() {echofor f in $SQLBOT_RUNNING_BASE/*.yml; do[[ -e "$f" ]] || breakgrep "^ image:.*:" "$f" | uniq | while read -r component_image_defined; docomponent_version=$(echo ${component_image_defined} | awk -F":" '{print 3ドル}' | uniq)component_image=$(echo ${component_image_defined} | awk -F'image: ' '{print 2ドル}' | awk -F':' '{print 1ドル}')if [[ $(docker images | grep "$component_image[[:space:]]" | grep -v " $component_version " | wc -l) == 0 ]]; thenecho "$component_image 不存在旧版本镜像"elseecho "存在非当前版本镜像 : "docker images | grep "$component_image[[:space:]]" | grep -v " $component_version "echo "清理${component}镜像"docker rmi $(docker images | grep "$component_image[[:space:]]" | grep -v " $component_version " | awk -F' ' '{print 1ドル":"2ドル}')echo "清理完毕"fidonedoneif [ $(docker images -f dangling=true -q | wc -l) -gt 0 ]; thenecho "清理虚悬镜像"docker rmi $(docker images -f dangling=true -q)echo "清理完毕"fi}function clear_logs() {echo "开始清理 SQLBot 历史日志"rm -rf ${SQLBOT_LOG_PATH}/*.*.*echo "" > ${SQLBOT_LOG_PATH}/info.logecho "" > ${SQLBOT_LOG_PATH}/debug.logecho "" > ${SQLBOT_LOG_PATH}/error.logecho "清理完毕"}function main() {case "${action}" instatus)status;;start)start;;stop)stop;;restart)restart;;reload)reload;;clear-images)clear_images;;clear-logs)clear_logs;;version)version;;help)usage;;--help)usage;;"")usage;;*)echo "不支持的参数,请使用 help 或 --help 参数获取帮助";;esac}main
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。