diff --git a/LFtid1056/cloudfront/boot/feservice b/LFtid1056/cloudfront/boot/feservice index 95db549..854c2af 100644 --- a/LFtid1056/cloudfront/boot/feservice +++ b/LFtid1056/cloudfront/boot/feservice @@ -1,5 +1,10 @@ #!/bin/bash +if [ -z "$FEP_ENV" ]; then + echo "Error: FEP_ENV is not set. Please set it first." + exit 1 +fi + case "$1" in 'start') $FEP_ENV/boot/start_fe.sh diff --git a/LFtid1056/cloudfront/boot/ps_fe.sh b/LFtid1056/cloudfront/boot/ps_fe.sh index 62b4812..db31411 100644 --- a/LFtid1056/cloudfront/boot/ps_fe.sh +++ b/LFtid1056/cloudfront/boot/ps_fe.sh @@ -1,14 +1,9 @@ #!/bin/bash -# @file: $RCSfile: ps_fe.sh,v $ -# @brief: $系统应用显示进程脚本 -# @version: $Revision: 1.2 $ -# @date: $Date: 2017/02/23 03:42:58 $ -# @author: $Author: zhanchengguo $ -# @state: $State: Exp $ -# @latest: $Id: ps_fe.sh,v 1.2 2017/02/23 03:42:58 zhanchengguo Exp $ - -echo "" +if [ -z "$FEP_ENV" ]; then + echo "Error: FEP_ENV is not set. Please set it first." + exit 1 +fi RUNTIME_CF_FILE="$FEP_ENV/etc/runtime.cf" @@ -40,5 +35,3 @@ while read LINE ; do fi fi done < $RUNTIME_CF_FILE - -echo "" diff --git a/LFtid1056/cloudfront/boot/start_fe.sh b/LFtid1056/cloudfront/boot/start_fe.sh index 3d3f1f5..acea953 100644 --- a/LFtid1056/cloudfront/boot/start_fe.sh +++ b/LFtid1056/cloudfront/boot/start_fe.sh @@ -1,106 +1,101 @@ #!/bin/bash -# @file: $RCSfile: start_fe.sh,v $ -# @brief: $系统应用启动脚本 -# @version: $Revision: 1.1 $ -# @date: $Date: 2018/12/26 07:19:31 $ -# @author: $Author: lizhongming $ -# @state: $State: Exp $ -# @latest: $Id: start_fe.sh,v 1.1 2018/12/26 07:19:31 lizhongming Exp $ - -QTDIR=/qt-4.8.4 -export QTDIR - -FEP_ENV=/home/pq/zwproject/LFtid1056 +# ========= 0. 获取脚本所在路径的上一层,设置为 FEP_ENV ========= +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +FEP_ENV="$(dirname "$SCRIPT_DIR")" export FEP_ENV -PATH=$FEP_ENV/bin:$QTDIR/bin:$PATH -export PATH - -LD_LIBRARY_PATH=$FEP_ENV/lib:$FEP_ENV/lib3rd:$QTDIR/lib:$LD_LIBRARY_PATH -export LD_LIBRARY_PATH - -check_log_file() -{ -if [ -n "$1" ] ; then - FILE_SIZE=0 - FILE_SIZE=`du $1 | awk '{print $1}'` - if [ $FILE_SIZE -ge 5120 ] - then - if [ -f "$1".3 ]; then - rm -f "$1".3 - fi - if [ -f "$1".2 ]; then - mv "$1".2 "$1".3 - fi - if [ -f "$1".1 ]; then - mv "$1".1 "$1".2 - fi - mv "$1" "$1".1 - fi +# ========= 1. 初始化软连接 ========= +TEMP_LINK_CREATED=0 +# 获取当前路径 +CURRENT_DIR=$(pwd) +if [ -L "/FeProject" ]; then + if [ "$CURRENT_DIR" = "/FeProject" ]; then + echo "Currently in /FeProject, skipping symlink replacement to avoid issues." + else + echo "/FeProject is an existing symlink. Replacing it..." + sudo rm -f /FeProject + sudo ln -s "$FEP_ENV" /FeProject + TEMP_LINK_CREATED=1 + echo "Symlink /FeProject updated." + fi +elif [ ! -e "/FeProject" ]; then + echo "/FeProject does not exist. Creating new symlink..." + sudo ln -s "$FEP_ENV" /FeProject + TEMP_LINK_CREATED=1 + echo "Symlink /FeProject created." +else + echo "/FeProject exists but is not a symlink. Please check manually." fi + +if [ -z "$FEP_ENV" ]; then + echo "Error: FEP_ENV is not set. Please set it first." + exit 1 +fi + +# ========= 2. 日志轮转函数 ========= +check_log_file() { + if [ -n "$1" ]; then + FILE_SIZE=$(du "$1" | awk '{print $1}') + if [ "$FILE_SIZE" -ge 5120 ]; then + [ -f "$1.3" ] && rm -f "$1.3" + [ -f "$1.2" ] && mv "$1.2" "$1.3" + [ -f "$1.1" ] && mv "$1.1" "$1.2" + mv "$1" "$1.1" + fi + fi } LOGFILE="$FEP_ENV/dat/log/start_fe.log" -check_log_file $LOGFILE +check_log_file "$LOGFILE" - -echo "" ; echo "" -echo "******* `date "+%F %R:%S"` Start Processes *******" +echo "" ; echo "" +echo "******* $(date "+%F %R:%S") Start Processes *******" echo "" >>"$LOGFILE" echo "" >>"$LOGFILE" -echo "******* `date "+%F %R:%S"` Start Processes *******" >>"$LOGFILE" -#sysctl -w "kernel.core_pattern=/usr/local/sascore/%e.%p.%t.core" &> /dev/null - -#执行程序路径^可执行程序名 启动参数 ^重启特有参数^首次启动特有参数^程序首次启动前的延时秒数^重启是否忽略^首次启动是否忽略 +echo "******* $(date "+%F %R:%S") Start Processes *******" >>"$LOGFILE" +# ========= 3. 启动流程 ========= RUNTIME_CF_FILE="$FEP_ENV/etc/runtime.cf" echo "Using config file name: $RUNTIME_CF_FILE" -echo "Using config file name: $RUNTIME_CF_FILE">>"$LOGFILE" -CURDIR=`pwd` -while read LINE ; do - if [ -n "$LINE" ] ; then - if [ ${LINE:0:1} != "#" ]; then - BINPATH=`echo $LINE | awk -F '^' '{printf $1}'` - BINPATH=`echo "$BINPATH" | grep -o "[^ ]\+\( \+[^ ]\+\)*"` -# echo $BINPATH - BIN=`echo $LINE | awk -F '^' '{printf $2}'` - BIN=`echo "$BIN" | grep -o "[^ ]\+\( \+[^ ]\+\)*"` -# echo $BIN - SPECIAL=`echo $LINE | awk -F '^' '{printf $4}'` - SPECIAL=`echo "$SPECIAL" | grep -o "[^ ]\+\( \+[^ ]\+\)*"` -# echo $SPECIAL - - SLEEPSEC=`echo $LINE | awk -F '^' '{printf $5}'` - SLEEPSEC=`echo "$SLEEPSEC" | grep -o "[^ ]\+\( \+[^ ]\+\)*"` -# echo $SLEEPSEC - STARTFLAG=`echo $LINE | awk -F '^' '{printf $7}'` - STARTFLAG=`echo "$STARTFLAG" | grep -o "[^ ]\+\( \+[^ ]\+\)*"` -# echo $STARTFLAG +echo "Using config file name: $RUNTIME_CF_FILE" >>"$LOGFILE" - RESTARTFLAG=`echo $LINE | awk -F '^' '{printf $6}'` - RESTARTFLAG=`echo "$RESTARTFLAG" | grep -o "[^ ]\+\( \+[^ ]\+\)*"` - echo $RESTARTFLAG +cd "$FEP_ENV/boot" || exit 1 +CURDIR=$(pwd) - if [ "$RESTARTFLAG" = "IGNORE_RESTART" ]; then -# echo "" ; - CMD_STR=" sleep `echo $SLEEPSEC` " - echo "$CMD_STR" - echo "$CMD_STR" >>"$LOGFILE" - $CMD_STR - - CMD_STR=" `echo $BINPATH``echo $BIN` `echo $SPECIAL` " - echo "$CMD_STR" - echo "$CMD_STR" >>"$LOGFILE" - $CMD_STR &>/dev/null - fi - fi - fi -done < $RUNTIME_CF_FILE +while read -r LINE; do + if [ -n "$LINE" ] && [[ ${LINE:0:1} != "#" ]]; then + BINPATH=$(echo "$LINE" | awk -F '^' '{print $1}' | grep -o "[^ ]\+\( \+[^ ]\+\)*") + echo "$BINPATH" + BIN=$(echo "$LINE" | awk -F '^' '{print $2}' | grep -o "[^ ]\+\( \+[^ ]\+\)*") + echo "$BIN" + SPECIAL=$(echo "$LINE" | awk -F '^' '{print $4}' | grep -o "[^ ]\+\( \+[^ ]\+\)*") + echo "$SPECIAL" + SLEEPSEC=$(echo "$LINE" | awk -F '^' '{print $5}' | grep -o "[^ ]\+\( \+[^ ]\+\)*") + echo "$SLEEPSEC" + STARTFLAG=$(echo "$LINE" | awk -F '^' '{print $7}' | grep -o "[^ ]\+\( \+[^ ]\+\)*") + echo "$STARTFLAG" + RESTARTFLAG=$(echo "$LINE" | awk -F '^' '{print $6}' | grep -o "[^ ]\+\( \+[^ ]\+\)*") + echo "$RESTARTFLAG" -cd $CURDIR + if [ "$RESTARTFLAG" = "IGNORE_RESTART" ]; then + CMD_STR="sleep $SLEEPSEC" + echo "$CMD_STR" + echo "$CMD_STR" >>"$LOGFILE" + eval "$CMD_STR" + + CMD_STR="$BINPATH$BIN $SPECIAL" + echo "$CMD_STR" + echo "$CMD_STR" >>"$LOGFILE" + eval "$CMD_STR" &>/dev/null + fi + fi +done < "$RUNTIME_CF_FILE" + +cd "$CURDIR" + +DT=$(date "+%F %R:%S.%N") +echo "******* ${DT:0:23} Start Processes Succcessfully *******" +echo "******* ${DT:0:23} Start Processes Succcessfully *******" >>"$LOGFILE" -DT=`date "+%F %R:%S.%N"` -echo "******* ${DT:0:23} Start Processes Succcessfully *******" -echo "******* ${DT:0:23} Start Processes Succcessfully *******" >>"$LOGFILE" diff --git a/LFtid1056/cloudfront/boot/stop_fe.sh b/LFtid1056/cloudfront/boot/stop_fe.sh index acf99ff..18aa7dd 100644 --- a/LFtid1056/cloudfront/boot/stop_fe.sh +++ b/LFtid1056/cloudfront/boot/stop_fe.sh @@ -1,12 +1,9 @@ #!/bin/bash -# @file: $RCSfile: stop_fe.sh,v $ -# @brief: $系统应用停止进程脚本 -# @version: $Revision: 1.5 $ -# @date: $Date: 2017/02/28 08:40:43 $ -# @author: $Author: zhanchengguo $ -# @state: $State: Exp $ -# @latest: $Id: stop_fe.sh,v 1.5 2017/02/28 08:40:43 zhanchengguo Exp $ +if [ -z "$FEP_ENV" ]; then + echo "Error: FEP_ENV is not set. Please set it first." + exit 1 +fi check_log_file() { diff --git a/LFtid1056/cloudfront/code/main.cpp b/LFtid1056/cloudfront/code/main.cpp index b75a46d..718e9f2 100644 --- a/LFtid1056/cloudfront/code/main.cpp +++ b/LFtid1056/cloudfront/code/main.cpp @@ -318,7 +318,7 @@ void Front::FrontThread() { try { while (!m_bIsFrontThreadCancle) { check_3s_config(); // 瀹炴椂鏁版嵁瑙﹀彂 - create_recall_xml(); // 鐢熸垚寰呰ˉ鎷泋ml鏂囦欢 + //create_recall_xml(); // 鐢熸垚寰呰ˉ鎷泋ml鏂囦欢 check_ledger_update(); // 瑙﹀彂鍙拌处鏇存柊 } } catch (const std::exception& e) { diff --git a/LFtid1056/main_thread.cpp b/LFtid1056/main_thread.cpp index 61a31e1..d0f32c9 100644 --- a/LFtid1056/main_thread.cpp +++ b/LFtid1056/main_thread.cpp @@ -31,6 +31,32 @@ typedef struct { pthread_mutex_t lock; // 线程专用互斥锁 } thread_info_t; #endif + +void init_daemon(void) +{ + int pid; + int i; + + if( pid = fork() ) + exit(0); /** 是父进程,结束父进程 */ + else if( pid < 0 ) + exit(1); /** fork失败,退出 */ + + /** 是第一子进程,后台继续执行 */ + + setsid(); /** 第一子进程成为新的会话组长和进程组长并与控制终端分离 */ + + if( pid = fork() ) + exit(0); /** 是第一子进程,结束第一子进程 */ + else if( pid < 0) + exit(1); /** fork失败,退出 */ + + chdir("/FeProject/bin/"); //multi process running at same time + umask(0); /** 重设文件创建掩码 */ + + return; +} + /* 全局变量 */ thread_info_t thread_info[THREAD_CONNECTIONS]; // 线程信息数组 pthread_mutex_t global_lock = PTHREAD_MUTEX_INITIALIZER; // 全局互斥锁