wiki:task

Version 13 (modified by chenshuyao, 11 years ago) (diff)

--

定时开发

线上定时任务相关部署

  • jar包:192.168.236.196/data/clubcron/task/task-1.0-SNAPSHOT.jar (只有196这台机有)
  • 配置文件:/data/clubcron/task/conf/autoclub.properties (注意其中mc的相关配置要严格跟resin下的配置一致)
  • 日志:/data/clubcron/task/log/autoclubtask.log (默认全部任务都输出到这个文件)
  • 定时操作是利用系统crontab命令实现,所以对每个定时任务都需要准备好相关的脚本xxx.sh,然后让网络帮忙配置crontab命令
  • 执行脚本需要先配置好环境变量:ANALYZER_HOME=/data/clubcron/task(jar执行目录) LANG=zh_CN.GB18030(避免输出日志到控制台时中文乱码)
  • 举个例子:统计车友会会员排名的定时任务,利用crontab定时执行脚本,执行完后,再调http接口清缓存。

执行脚本:memberRankTask.sh

#!/bin/bash

export LANG=zh_CN.GB18030

ANALYZER_HOME=$(cd "$(dirname "$0")"; pwd)

cd $ANALYZER_HOME

/usr/java/jdk1.6.0_32/bin/java -jar task-1.0-SNAPSHOT.jar memberRankTask

sleep 3

curl -s -x 192.168.239.200:1080 --max-tim e600 --connect-timeout 120 " http://club.pcauto.com.cn/util/daily/clear_member_info.do"

crontab定时: * 0 0 * * * $ANALYZER_HOME/memberRankTask.sh >> $ANALYZER_HOME/memberRankTask.log 2>&1

crontab定时任务列表

  • 统计每个车友会会员排名,每天0点0分执行一次
    • 0 0 * * * $ANALYZER_HOME/memberRankTask.sh >> $ANALYZER_HOME/memberRankTask.log 2>&1
  • 统计车友会每天(昨天)增加的油值,每天1点0分执行一次
    • 0 1 * * * $ANALYZER_HOME/dailyClubMemberPetrolTask.sh >> $ANALYZER_HOME/log/dailyClubMemberPetrolTask.log 2>&1
  • 统计车友会每天(昨天)增加的油值,每天1点30分执行一次
    • 30 1 * * * $ANALYZER_HOME/dailyClubPetrolTask.sh >> $ANALYZER_HOME/log/dailyClubPetrolTask.log 2>&1
  • 统计过去一周的车友会油值,每周日2点0分执行一次
    • 0 2 * * 0 $ANALYZER_HOME/weeklyClubPetrolTask.sh >> $ANALYZER_HOME/log/weeklyClubPetrolTask.log 2>&1
  • 每天检查同步总油值、等级、发贴总数、留言总数,每天2点30分执行一次
    • 30 2 * * * $ANALYZER_HOME/synClubTotalPetrolTask.sh >> $ANALYZER_HOME/log/synClubTotalPetrolTask.log 2>&1
  • 按活跃度计算车友会排名,每天的3点0分执行一次
    • 0 3 * * * $ANALYZER_HOME/countClubRank.sh >> $ANALYZER_HOME/log/countClubRank.log 2>&1
  • 统计本周和上周的会员人数和认证人数,每周一的3点30分执行一次
    • 30 3 * * 1 $ANALYZER_HOME/clubTotalMemberTask.sh >> $ANALYZER_HOME/log/clubTotalMemberTask.log 2>&1
  • 车友会重置周排行,每周日23点55分执行一次
    • 55 23 * * 0 $ANALYZER_HOME/clearWeekRank.sh >>$ANALYZER_HOME/log/clearWeekRank.log 2>&1
  • 系统消息发送,0点1分,12点1分,15点1分都执行一次
    • 31 8,17,20 * * * $ANALYZER_HOME/sendSysMessage.sh >> $ANALYZER_HOME/log/sendSysMessage.log 2>&1
  • 车友会动态消息发送,12分钟执行一次
    • 0,12,24,36,48 * * * * $ANALYZER_HOME/sendClubMessage.sh >> $ANALYZER_HOME/log/sendClubMessage.log 2>&1
  • 车友会统计会员昨天周排行榜,每天12点01分执行一次
    • 1 0 * * * $ANALYZER_HOME/clubMemberYesterdayRankApp.sh >>$ANALYZER_HOME/log/clubMemberYesterdayRankApp.log 2>&1
  • 统计车友会每天发帖子、说说、回复情况,每天2点01分执行一次
    • 1 2 * * * $ANALYZER_HOME/dailyGeneralSituationTask.sh >>$ANALYZER_HOME/log/dailyGeneralSituationTask.log 2>&1

一次性工具

有时有些旧数据要处理,或者有报障,或者发单个系统消息,这时就需要用到下面的一些工具了。如果要输出日志到文件的话,就要叫网络帮忙执行,开发自己的账号是没有写文件的权限的。

  • 统计某个会员的总排行(最初是测试,处理报障时用,现在比较少用)
    • /usr/java/jdk1.6.0_32/bin/java -cp task-1.0-SNAPSHOT.jar cn.pconline.autoclub.task.MemberRank? initOneMemberAllRank ${clubId} ${userId}
  • 统计某个会员的周排行(最初是测试,处理报障时用,现在比较少用)
    • /usr/java/jdk1.6.0_32/bin/java -cp task-1.0-SNAPSHOT.jar cn.pconline.autoclub.task.MemberRank? initOneMemberWeekRank ${clubId} ${userId}
  • 删除MC的某个key(之前调试用,目前没用)
    • /usr/java/jdk1.6.0_32/bin/java -cp task-1.0-SNAPSHOT.jar cn.pconline.autoclub.task.McUtils? delete ${key}
  • 查询MC的某个值(之前调试用,目前没用)
    • /usr/java/jdk1.6.0_32/bin/java -cp task-1.0-SNAPSHOT.jar cn.pconline.autoclub.task.McUtils? get ${key}
  • 发送单条系统消息,不传ID就发送全部(偶尔会有编辑要赶着发系统消息)
    • /usr/java/jdk1.6.0_32/bin/java -cp task-1.0-SNAPSHOT.jar cn.pconline.autoclub.task.SendMsgTask? sendSysMsg [${msgId}]
  • 发送单条车友会动态提醒消息,不传ID就发送全部
    • /usr/java/jdk1.6.0_32/bin/java -cp task-1.0-SNAPSHOT.jar cn.pconline.autoclub.task.SendMsgTask? sendDynaMsg [${msgId}]
  • 同步动态图片(已经没用了)
    • /usr/java/jdk1.6.0_32/bin/java -cp task-1.0-SNAPSHOT.jar cn.pconline.autoclub.task.SyncTopicImage?
  • 同步动态回复(已经没用了)
    • /usr/java/jdk1.6.0_32/bin/java -cp task-1.0-SNAPSHOT.jar cn.pconline.autoclub.task.SyncTopicReply?