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
}

代码说明:

  1. is_exist 函数用于检测应用程序是否已运行,并设置 $? 环境变量。
  2. if [ $? -eq 0 ]; then 判断应用程序是否已运行。
  3. nohup java ... 命令用于后台启动 Java 应用程序,并将输出重定向到日志文件。
  4. sleep 10 等待 10 秒,以便应用程序启动。
  5. curl ... 命令用于发送微信通知。
  6. $TRUEINFO$ERRINFO 变量用于保存微信通知内容。

优化说明:

  1. 使用引号将命令行参数括起来,避免特殊字符导致命令执行失败。
  2. curl 命令的参数换行,以便阅读。
  3. 添加代码说明和优化说明,方便理解脚本功能。

注意:

  • 请根据实际情况替换 $APP_NAME$APP_PATH$JAR_NAME$CURRENT_DIR$TRUEINFO$ERRINFO 变量。
  • 请确保 is_exist 函数已经定义,并能正确检测应用程序是否已运行。
  • 请确保微信 webhook 地址和 key 正确。

其他建议:

  • 可以使用 trap 命令处理异常情况,例如程序启动失败。
  • 可以使用 logger 命令将日志信息记录到系统日志。
  • 可以使用 crontab 命令定时运行脚本。
Shell 脚本:启动 Java 应用程序并发送微信通知

原文地址: https://www.cveoy.top/t/topic/m9R5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录