通用启动脚本
#!/bin/bash
# 配置区域(用户可根据需要修改)
PORT=8421 # 检测端口号(设置为空字符串禁用端口检测)
KEYWORD="proficiency-system-0.0.1-SNAPSHOT.jar" # 进程关键字(设置为空字符串禁用关键字检测)
START_SCRIPT="/home/hubz/services/proficiencySystemService/start.sh" # 启动脚本绝对路径
LOG_FILE="/home/hubz/services/proficiencySystemService/service_monitor.log" # 日志文件路径
MAX_LOG_SIZE=1048576 # 日志最大大小(1MB)
# 参数检查
if [ -z "$PORT" ] && [ -z "$KEYWORD" ]; then
echo "错误:至少需要启用端口检测或关键字检测之一" | tee -a "$LOG_FILE"
exit 2
fi
if [ ! -x "$START_SCRIPT" ]; then
echo "错误:启动脚本不存在或没有执行权限" | tee -a "$LOG_FILE"
exit 2
fi
# 日志轮转
if [ -f "$LOG_FILE" ] && [ $(stat -c %s "$LOG_FILE") -gt $MAX_LOG_SIZE ]; then
mv "$LOG_FILE" "${LOG_FILE}.old"
fi
# 记录日志函数
log() {
echo "[$(date '+%Y-%m-%d %T')] $1" >> "$LOG_FILE"
}
# 端口检测函数
check_port() {
[ -z "$PORT" ] && return 1
ss -tln | awk '{print $4}' | grep -q ":${PORT}$"
return $?
}
# 进程检测函数
check_keyword() {
[ -z "$KEYWORD" ] && return 1
pgrep -f "$KEYWORD" >/dev/null
return $?
}
# 主检测逻辑
service_status=1
if check_port || check_keyword; then
service_status=0
fi
# 处理检测结果
if [ $service_status -eq 0 ]; then
log "服务检测成功(端口:${PORT:-未配置}/关键字:${KEYWORD:-未配置})"
exit 0
else
log "服务未运行,尝试启动..."
# 执行启动脚本并记录输出
if "$START_SCRIPT"; then
log "启动脚本执行成功"
exit 0
else
log "启动脚本执行失败,退出码:$?"
exit 1
fi
fi
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果