You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本如何组合多条件判断应用运行状态

应用运行状态双条件检测Shell实现方案

核心判定规则:仅当test-core进程存在、应用访问URL返回200响应两个条件同时满足时,判定应用整体运行正常。

实现思路

你原脚本已经完成了两个单项检测的逻辑,只需要额外做简单改造即可:

  • 为两项检测分别定义状态标记变量,检测通过时将对应标记设为成功值
  • 最后对两个标记做逻辑与判断,只有全部为成功时输出整体运行正常的结论
  • 额外给curl增加超时参数,避免网络异常时脚本永久卡住

改造后完整代码

#!/bin/bash

# 初始化两个检测项的状态标记:0代表异常,1代表正常
pid_ok=0
url_ok=0

# 检测1:java connector服务进程状态
echo "Checking health of java connectors"
PID=$(ps -ef | grep test-core | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
  echo "INFO: Java connector service is running"
  pid_ok=1
else
  echo "WARNING: Java connector service is not running"
fi

# 检测2:应用URL访问状态,增加5秒超时避免脚本卡死
echo "Checking application URL status"
status="$(curl -Is -m 5 http://172.217.23.16/application/authenticate | head -1)"
validate=( $status )
if [ "${validate[-2]}" == "200" ]; then
  echo "INFO: Application URL is up and running"
  url_ok=1
else
  echo "WARNING: Application URL is NOT RESPONDING"
fi

# 最终组合判断:两个条件同时满足才判定整体正常
echo "================ Final Health Check Result ================"
if [ $pid_ok -eq 1 ] && [ $url_ok -eq 1 ]; then
  echo "Application is running OK"
else
  echo "Application is ABNORMAL, please check the warning logs above"
fi

关键逻辑说明

  • 逻辑与判断用Shell原生的&&运算符实现,只有运算符前后两个判断条件都成立时,才会进入对应分支
  • 状态标记变量独立存储单项检测结果,后续如果要加更多检测项(比如端口检测、磁盘剩余空间检测),只需要新增对应标记变量,最后统一加入最终判断即可
  • 给curl加-m 5参数是生产环境脚本的常用优化,设置最大请求时长5秒,避免网络不通时脚本无限等待

内容的提问来源于stack exchange,提问作者user15566016

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:31:14