shell_实现分组统计数据

这是一个用于实时处理数据的Shell脚本,主要功能是分组统计数据。脚本中包含了日志记录函数、程序运行唯一性检查、日期加减天数的计算以及核心的CDR数据处理流程。通过读取特定格式的文件,对数据进行统计并生成报告,最后将处理后的文件移动到指定目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/ksh
##########################################################################################
#程序名称:
#作者姓名:
#开发时间:
#参数列表:date   处理数据的时间,
#功能说明:实时处理数据
#         
##########################################################################################

 


TEMP_FILE_DIR=$HOME/smp_run/smpser/temp
LIST_FILE_DIR=$HOME/smp_run/smpser/temp
BILL_FILE_DIR=$HOME/smp_run/smpser/temp/billbackup
LOAD_FILE_DIR=$HOME/smp_run/smpser/load
LOGDIR=$HOME/smp_run/smpser/log
FLAGDIR=$HOME/smp_run/smpser/flag
LogFile=${LOGDIR}/bill_w_kpi.sh.log            #日志文件

 

Log()
{
    timestr=`date '+%Y-%m-%d %H:%M:%S '`

    if [ "-$LogFile" = "-" ]; then
        echo "ERROR: LogFile is not defined!"       
        exit 1
    fi
    #如果带-s参数,说明既向日志文件输出,同时也需要向屏幕输出
    if [ "x$1" = "x-s" ]; then
        shift
        echo "$*" >> $LogFile
        echo "$*"
    else
    #否则,只向日志文件输出
        echo ${timestr}"$*" >> $LogFile
        echo ${timestr}"$*"
    fi
}

#调用格式:LogStart 程序名
#例如:LogStart $0
LogStart()
{
    Log -s " "
    Log -s " "
    Log "++++++++++  $1 Start  ++++++++++"
}

#调用格式:LogEnd 程序名
#例如:LogEnd $0
LogEnd()
{
    Log "----------  $1  End   ----------"
    Log -s " "
}

 

# ======   main   ==============================================
ProgName=`basename $0`

#程序运行唯一性检查
CheckUnique()
{
    Log " "
    Log "Begin to check unique ..."

    pid=$$

    ps -ef|grep $1|grep $LOGNAME |grep -v grep|grep -v $pid |grep -v root |grep -v "c $1"|read result

    if [ "-${result}" = "-" ]; then
        Log "Only one $1 is running!"
    else
        Log "another $1 is already running!!"
        LogEnd $1
        exit 1
    fi
    Log "Check unique   OK!"
}

###############################################
#
#功能:计算一个日期加或减一个天数后得到的新日期
#输入参数:
#   1.日期
#   2.要变化的天数
#输出:
#   变化后的日期
#   -1 失败
#   0 :表示增量为零
################################################
day_calculate()
{
    date1=$1
    datemodi=$2

    #若日期增量为0,则返回输入日期
    if [ $datemodi -eq 0 ]; then
      ret_date=$date1
      return 0
    fi
    yy=`echo $date1 | cut -b 1-4`
    if [ $? -ne 0 ]; then
       return -1
    fi

  &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值