diff --git a/cds-fontend-2025.V1/src/views/system/user/modules/user-import-modal.vue b/cds-fontend-2025.V1/src/views/system/user/modules/user-import-modal.vue index 0eaf1de..a59f011 100644 --- a/cds-fontend-2025.V1/src/views/system/user/modules/user-import-modal.vue +++ b/cds-fontend-2025.V1/src/views/system/user/modules/user-import-modal.vue @@ -139,9 +139,9 @@ watch(visible, () => { -
- - + {{ message }} diff --git a/cds-platform-2025.V1/script/bin/cds.sh b/cds-platform-2025.V1/script/bin/cds.sh index 32a5851..bd88683 100644 --- a/cds-platform-2025.V1/script/bin/cds.sh +++ b/cds-platform-2025.V1/script/bin/cds.sh @@ -1,11 +1,22 @@ #!/bin/sh # ./cds.sh start 启动 stop 停止 restart 重启 status 状态 AppName=mps-server.jar +ServerName=mps-server + +# 应用端口配置/需要与maps-server启动端口保持一致 +APP_PORT=10800 # JVM参数 -JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms2048m -Xmx4096m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=2048m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC -Djasypt.encryptor.password=66668888" -APP_HOME=`pwd` -LOG_PATH=$APP_HOME/logs/$AppName.log +JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms2048m -Xmx4096m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=2048m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC -Djasypt.encryptor.password=66668888" +APP_HOME=$(pwd) +LOG_PATH=$APP_HOME/logs/$ServerName.log + +# 健康检查超时时间/秒 +HEALTH_CHECK_TIMEOUT=60 + +echo_with_timestamp() { + echo "[$(date '+%Y-%m-%d %H:%M:%S')] $@" +} if [ "$1" = "" ]; then @@ -19,44 +30,113 @@ then exit 1 fi +function wait_for_health_check() { + local timeout=$1 + local pid=$2 + local elapsed=0 + local interval=2 + + while [ $elapsed -lt $timeout ]; do + # 检查日志中的启动完成消息,暂定使用检查服务端口的方式 + #if grep -q "mps started successfully" "$LOG_PATH" 2>/dev/null; then + # echo_with_timestamp ">>>>>>>> Check log info pass..." + # return 0 + #fi + + # 检查服务端口启动成功/端口启动即表示服务启动成功 + if netstat -tln | grep -q ":$APP_PORT "; then + echo_with_timestamp ">>>>>>>> Check app server port start suc..." + return 0 + fi + + # app pid已经关闭,退出health eheck + if ! ps -p $pid > /dev/null; then + echo_with_timestamp ">>>>>>>> Check app pid existing fail..." + return 1 + fi + + echo_with_timestamp ">>>>>>>> Waiting for $interval second to recheck..." + + sleep $interval + elapsed=$((elapsed + interval)) + done + + return 1 +} + function start() { - PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'` + echo "----------------------------------------------------------" - if [ x"$PID" != x"" ]; then - echo "$AppName is running..." - else - nohup java $JVM_OPTS -jar $AppName > /dev/null 2>&1 & - echo "Start $AppName success..." + PID=$(ps -ef | grep java | grep "$AppName" | grep -v grep | awk '{print $2}') + + if [ -n "$PID" ]; then + echo_with_timestamp ">>>> $ServerName is already running..." + echo "----------------------------------------------------------" + return 0 fi + + # 启动前确保日志目录存在 + mkdir -p "$APP_HOME/logs" + + # 使用nohup启动应用并记录PID + echo_with_timestamp ">>>> Ready to starting $ServerName on port $APP_PORT..." + nohup java $JVM_OPTS -jar "$AppName" >> "$LOG_PATH" 2>&1 & + local new_pid=$! + + echo_with_timestamp ">>>> Started $ServerName with PID: $new_pid" + + # 等待健康检查 + echo_with_timestamp ">>>>>> Starting health check..." + if wait_for_health_check $HEALTH_CHECK_TIMEOUT $new_pid; then + echo_with_timestamp ">>>> Start $ServerName success..." + else + echo_with_timestamp ">>>>>> Start $ServerName failed or health check timeout..." + # 尝试获取退出状态 ----- 当健康检查超时而server启动成功时会卡住,不使用 + #if wait $new_pid 2>/dev/null; then + # local exit_status=$? + # echo_with_timestamp ">>>> Application exited with status: $exit_status" + #fi + echo "----------------------------------------------------------" + return 1 + fi + + echo "----------------------------------------------------------" } function stop() { - echo "Stop $AppName" + echo "----------------------------------------------------------" + + echo_with_timestamp ">>>> Ready to stopping $ServerName..." PID="" query(){ - PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'` + PID=$(ps -ef | grep java | grep "$AppName" | grep -v grep | awk '{print $2}') } query - if [ x"$PID" != x"" ]; then - kill -TERM $PID - echo "$AppName (pid:$PID) exiting..." - while [ x"$PID" != x"" ] + if [ -n "$PID" ]; then + echo_with_timestamp ">>>>>> Found running process with PID: $PID" + kill -TERM "$PID" + echo_with_timestamp ">>>>>> $ServerName (pid:$PID) exiting..." + while [ -n "$PID" ] do sleep 1 query done - echo "$AppName exited." + echo_with_timestamp ">>>>>> $ServerName exited." else - echo "$AppName already stopped." + echo_with_timestamp ">>>> $ServerName already stopped." fi + + echo_with_timestamp ">>>> Stop $ServerName success..." + echo "----------------------------------------------------------" } function restart() { + echo_with_timestamp ">> Ready to restarting $ServerName..." stop sleep 2 start @@ -64,23 +144,88 @@ function restart() function status() { - PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l` - if [ $PID != 0 ];then - echo "$AppName is running..." + echo "----------------------------------------------------------" + + PID=$(ps -ef | grep java | grep "$AppName" | grep -v grep | awk '{print $2}') + if [ -n "$PID" ]; then + echo_with_timestamp ">> $ServerName is running (PID: $PID)" + + local port_listening=$(netstat -tln | grep ":$APP_PORT " | wc -l) + if [ "$port_listening" -gt 0 ]; then + echo_with_timestamp ">> Application is listening on port $APP_PORT" + + #需要root用户或其他用户增加netstat权限 + local port_info=$(netstat -tlnp | grep ":$APP_PORT " | grep java) + if [ -n "$port_info" ]; then + echo_with_timestamp ">> Port details: $port_info" + fi + + if command -v nc >/dev/null 2>&1; then + if nc -z localhost $APP_PORT; then + echo_with_timestamp ">> Port $APP_PORT is accessible" + else + echo_with_timestamp ">> Warning: Port $APP_PORT is listening but not accessible" + fi + fi + else + echo_with_timestamp ">> Warning: Application is running but not listening on port $APP_PORT" + fi + + # 运行时间 + local uptime=$(ps -o etime= -p "$PID" 2>/dev/null | xargs) + if [ -n "$uptime" ]; then + echo_with_timestamp ">> Process uptime: $uptime" + fi + + # 内存使用 + local memory_usage=$(ps -o rss= -p "$PID" 2>/dev/null | xargs) + if [ -n "$memory_usage" ]; then + memory_usage=$((memory_usage / 1024)) + echo_with_timestamp ">> Memory usage: ${memory_usage}MB" + fi + else - echo "$AppName is not running..." + echo_with_timestamp ">> $ServerName is not running" + + # 端口被占用 + local port_used_by=$(netstat -tlnp | grep ":$APP_PORT " | awk '{print $7}' | cut -d'/' -f1) + if [ -n "$port_used_by" ]; then + echo_with_timestamp ">> Warning: Port $APP_PORT is being used by another process (PID: $port_used_by)" + fi fi + + echo "----------------------------------------------------------" +} + +function show_config() +{ + echo "----------------------------------------------------------" + echo_with_timestamp ">> Application Configuration:" + echo_with_timestamp ">>>> Name: $ServerName" + echo_with_timestamp ">>>> Port: $APP_PORT" + echo_with_timestamp ">>>> Home: $APP_HOME" + echo_with_timestamp ">>>> Log : $LOG_PATH" + echo "----------------------------------------------------------" } case $1 in start) - start;; + start + ;; stop) - stop;; + stop + ;; restart) - restart;; + restart + ;; status) - status;; + status + ;; + config) + show_config + ;; *) - + echo_with_timestamp "Usage: $0 {start|stop|restart|status|config}" + exit 1 + ;; esac