金华网站建设企业,电脑培训,网页制作与网站建设题,图片制作微信表情包#!/bin/bash# 配置部分 ############################################################## Zipkin JAR 文件的名称
# 这里指定了 Zipkin 的可执行 JAR 文件#xff0c;确保该文件在当前目录中可用。
ZIPKIN_JARzipkin-server-2.23.2-exec.jar# PID 文件的位置
# 该…#!/bin/bash# 配置部分 ############################################################## Zipkin JAR 文件的名称
# 这里指定了 Zipkin 的可执行 JAR 文件确保该文件在当前目录中可用。
ZIPKIN_JARzipkin-server-2.23.2-exec.jar# PID 文件的位置
# 该文件用于存储运行中 Zipkin 进程的 PID (Process ID)。用于后续检查进程是否在运行或停止它。
ZIPKIN_PID_FILEzipkin.pid# 日志文件的位置
# Zipkin 的日志输出将被重定向到此文件中。
ZIPKIN_LOG_FILEzipkin.log# MySQL 配置 ############################################################## Zipkin 的存储类型指定为 MySQL
STORAGE_TYPEmysql# MySQL 数据库的连接主机使用阿里云的 MySQL RDS 地址
MYSQL_HOSTrm-xx.mysql.rds.aliyuncs.com# MySQL 数据库的用户名
MYSQL_USERroot# MySQL 数据库的密码
MYSQL_PASS123456# MySQL 数据库的名称
MYSQL_DBzipkin# 启动 Zipkin 的命令 #####################################################
# 指定时区 Asia/Shanghai 及使用 MySQL 存储
# 该函数用于启动 Zipkin使用指定的存储设置 (MySQL) 和时区 (Asia/Shanghai)。
start_zipkin() {# 使用 nohup 命令后台启动 Zipkin避免其受到终端关闭的影响。# -Duser.timezoneAsia/Shanghai 用于指定 Zipkin 进程的时区为中国标准时间 (UTC8)。nohup java -Duser.timezoneAsia/Shanghai -jar $ZIPKIN_JAR \--STORAGE_TYPE$STORAGE_TYPE \--MYSQL_HOST$MYSQL_HOST \--MYSQL_USER$MYSQL_USER \--MYSQL_PASS$MYSQL_PASS \--MYSQL_DB$MYSQL_DB \ $ZIPKIN_LOG_FILE 21 # 获取启动的进程 ID并存入 PID 文件# 使用 $! 获取最后一个后台进程的 PID并将其写入到 PID 文件中以便后续使用。echo $! $ZIPKIN_PID_FILEecho Zipkin started with PID $(cat $ZIPKIN_PID_FILE)
}# 停止 Zipkin 的命令 #####################################################
# 该函数用于停止运行中的 Zipkin 进程。
stop_zipkin() {# 检查 PID 文件是否存在确保 Zipkin 进程正在运行if [ -f $ZIPKIN_PID_FILE ]; then# 读取 PID 文件中的进程 IDPID$(cat $ZIPKIN_PID_FILE)# 检查该进程是否正在运行if ps -p $PID /dev/null 21; thenecho Stopping Zipkin (PID: $PID)...# 尝试正常停止进程kill $PIDsleep 5 # 等待 5 秒钟确保进程有时间正常停止# 再次检查进程是否仍在运行if ps -p $PID /dev/null 21; thenecho Failed to stop Zipkin. Force killing it...# 如果进程未停止则强制终止进程kill -9 $PIDfi# 删除 PID 文件表示 Zipkin 已停止rm -f $ZIPKIN_PID_FILEecho Zipkin stopped.elseecho Zipkin is not running, but PID file exists. Cleaning up...# 如果进程不存在但 PID 文件存在清理无效的 PID 文件rm -f $ZIPKIN_PID_FILEfielseecho No PID file found. Zipkin may not be running.fi
}# 检查 Zipkin 是否在运行 ##################################################
# 该函数用于检查 Zipkin 是否正在运行。
is_running() {# 检查 PID 文件是否存在if [ -f $ZIPKIN_PID_FILE ]; then# 读取 PID 文件中的进程 IDPID$(cat $ZIPKIN_PID_FILE)# 检查该进程是否正在运行if ps -p $PID /dev/null 21; thenreturn 0 # 返回 0 表示进程正在运行elsereturn 1 # 返回 1 表示 PID 文件存在但进程不在运行fielsereturn 1 # 返回 1 表示没有 PID 文件认为 Zipkin 未运行fi
}# 主逻辑 #################################################################
# 该部分是脚本的主逻辑控制 Zipkin 的启动和停止操作。# 首先检查 Zipkin 是否在运行
if is_running; then# 如果 Zipkin 正在运行先停止它echo Zipkin is already running. Stopping it first...stop_zipkin
fi# 启动 Zipkin
echo Starting Zipkin...
start_zipkin脚本说明
1. 配置部分 ZIPKIN_JAR指定 Zipkin 的可执行 JAR 文件确保该文件在当前工作目录中存在。ZIPKIN_PID_FILE存储 Zipkin 进程的 PID用于停止或检查进程是否在运行。ZIPKIN_LOG_FILE指定 Zipkin 运行日志的输出文件路径。STORAGE_TYPE、MYSQL_HOST、MYSQL_USER、MYSQL_PASS、MYSQL_DB用于配置 Zipkin 的存储后端为 MySQL并提供连接信息。 2. 启动 Zipkin (start_zipkin 函数) 该函数用于启动 Zipkin并将其日志输出到指定的日志文件中同时将进程的 PID 存储到 PID 文件中。通过 -Duser.timezoneAsia/Shanghai指定了 Zipkin 运行的时区为 Asia/Shanghai中国标准时间UTC8。使用 nohup 命令确保 Zipkin 在后台运行即使终端关闭也不会影响 Zipkin 的运行。 3. 停止 Zipkin (stop_zipkin 函数) 该函数用于停止 Zipkin 进程。它首先检查 PID 文件是否存在如果存在则读取 PID 并检查进程是否在运行。如果进程正在运行首先尝试正常停止它。如果在 5 秒内未能停止进程则使用 kill -9 强制终止进程。完成后删除 PID 文件。 4. 检查 Zipkin 是否在运行 (is_running 函数) 该函数通过检查 PID 文件是否存在并验证 PID 对应的进程是否在运行来判断 Zipkin 是否正在运行。如果进程正在运行返回 0否则返回 1。 5. 主逻辑 主逻辑首先调用 is_running 函数检查 Zipkin 是否在运行。如果 Zipkin 正在运行先调用 stop_zipkin 函数停止它。最后调用 start_zipkin 函数启动 Zipkin。 使用说明 保存脚本 将上面的脚本保存为 zipkin_control.sh并赋予可执行权限 chmod x zipkin_control.sh 启动或重启 Zipkin 运行脚本时它会先检查 Zipkin 是否正在运行。如果正在运行则停止它然后重新启动。
./zipkin_control.sh 日志查看 你可以通过查看 zipkin.log 文件来监控 Zipkin 的输出日志 tail -f zipkin.log
总结
该脚本自动处理 Zipkin 的启动和停止操作并记录日志和进程信息。通过使用 PID 文件可以确保脚本能正确识别并管理 Zipkin 进程。通过 -Duser.timezone 参数设置了 Zipkin 的时区确保日志输出符合指定时区。启动成功查看地址http://127.0.0.1:9411/ 服务器ip 默认端口9411查询启动情况 ps aux | grep zipkin