#!/bin/bash # ==================================================== # 工作日志服务平台 - 应用状态查看脚本 # ==================================================== # 应用配置 APP_NAME="worklog-api" APP_HOME="/opt/worklog/${APP_NAME}" PID_FILE="${APP_HOME}/${APP_NAME}.pid" # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo "========================================" echo "应用状态查看: ${APP_NAME}" echo "========================================" # 检查 PID 文件是否存在 if [ ! -f "${PID_FILE}" ]; then echo -e "${RED}[未运行]${NC} 未找到 PID 文件,应用可能未启动" exit 1 fi # 读取 PID PID=$(cat "${PID_FILE}") # 检查进程是否存在 if ! ps -p ${PID} > /dev/null 2>&1; then echo -e "${RED}[异常]${NC} PID 文件存在但进程不存在 (PID: ${PID})" echo "建议:执行 stop.sh 清理残留文件后重新启动" exit 1 fi # 应用正在运行,显示详细信息 echo -e "${GREEN}[运行中]${NC} 应用正在运行" echo "" echo "进程信息:" echo " PID: ${PID}" echo " 启动时间: $(ps -p ${PID} -o lstart=)" echo " 运行时长: $(ps -p ${PID} -o etime=)" echo " CPU 占用: $(ps -p ${PID} -o %cpu=)%" echo " 内存占用: $(ps -p ${PID} -o %mem=)%" echo "" # 显示端口监听情况 echo "端口监听:" netstat -tlnp 2>/dev/null | grep ${PID} | awk '{print " " $4}' || \ ss -tlnp 2>/dev/null | grep ${PID} | awk '{print " " $5}' echo "" # 显示最近日志 LOG_DIR="${APP_HOME}/logs" if [ -d "${LOG_DIR}" ]; then echo "最近日志 (最后 10 行):" echo "----------------------------------------" if [ -f "${LOG_DIR}/app.log" ]; then tail -n 10 "${LOG_DIR}/app.log" else echo " 未找到日志文件" fi else echo "日志目录不存在: ${LOG_DIR}" fi echo "" echo "========================================" echo "查看实时日志: tail -f ${LOG_DIR}/app.log" echo "查看 SQL 日志: tail -f ${LOG_DIR}/sql.log" echo "========================================" exit 0