Shell 脚本:启动 Java 应用程序并发送微信通知
start() {
is_exist
if [ $? -eq 0 ]; then
GRE "${APP_NAME} is already running. pid=${pid} ."
else
nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5008 -jar "$APP_PATH$JAR_NAME" >"${CURRENT_DIR}/log.log" 2>&1 &
GRE "${APP_NAME} 后台启动中,正在检测程序启动状态"
sleep 10
is_exist
if [ $? -eq 0 ]; then
GRE " 检测到 ${APP_NAME} 已成功运行. pid=${pid} ."
sleep 3
curl -H "Content-Type: application/json;charset=utf-8" \
-d '{"msgtype": "markdown","markdown": {"content":"# [开发环境]-[JAVA后端]-[存活探测]
>##
$TRUEINFO "}}' \
"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=04a90303-2a83-4fd3-b315-9b12cf25484a"
else
nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5008 -jar "$APP_PATH$JAR_NAME" >"${CURRENT_DIR}/log.log" 2>&1 &
GRE "${APP_NAME} 第二次尝试启动。如果看到本提示请注意!"
curl -H "Content-Type: application/json;charset=utf-8" \
-d '{"msgtype": "markdown","markdown": {"content":"# [开发环境]-[JAVA后端]-[存活探测]
>##
$ERRINFO "}}' \
"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=04a90303-2a83-4fd3-b315-9b12cf25484a"
fi
fi
}
代码说明:
is_exist函数用于检测应用程序是否已运行,并设置$?环境变量。if [ $? -eq 0 ]; then判断应用程序是否已运行。nohup java ...命令用于后台启动 Java 应用程序,并将输出重定向到日志文件。sleep 10等待 10 秒,以便应用程序启动。curl ...命令用于发送微信通知。$TRUEINFO和$ERRINFO变量用于保存微信通知内容。
优化说明:
- 使用引号将命令行参数括起来,避免特殊字符导致命令执行失败。
- 将
curl命令的参数换行,以便阅读。 - 添加代码说明和优化说明,方便理解脚本功能。
注意:
- 请根据实际情况替换
$APP_NAME、$APP_PATH、$JAR_NAME、$CURRENT_DIR、$TRUEINFO和$ERRINFO变量。 - 请确保
is_exist函数已经定义,并能正确检测应用程序是否已运行。 - 请确保微信 webhook 地址和 key 正确。
其他建议:
- 可以使用
trap命令处理异常情况,例如程序启动失败。 - 可以使用
logger命令将日志信息记录到系统日志。 - 可以使用
crontab命令定时运行脚本。
原文地址: https://www.cveoy.top/t/topic/m9R5 著作权归作者所有。请勿转载和采集!