通过Linux定时任务实现定时轮询数据库及发送Http请求
2024-09-05 05:30:17
通过Linux定时任务实现定时轮询数据库及发送Http请求
概述
有时需要临时增加一个定时任务(需要根据数据库查询结果然后发送HTTP请求),如果在项目中额外增加(Java+Spring+Quartz),则需要编写很多代码,而且还需要重新编译发布,比较麻烦,特别是在紧急情况下的时候。采用Linux脚本,再加上JSP(根据业务需要),可以比较快的解决问题。
环境准备
- 安装MySQL Client
- 安装curl
脚本内容
#!/bin/bash
#
# @file test_task.sh
# @brief test_task
# @author Huligong1234
# @version 0.1
# @date 2018-02-17
#
#脚本目录
WORK_DIR=/data/scripts
#日志目录
LOG_DIR=${WORK_DIR}/logs/test_task
LOG_FILE_NAME=test_task_`date +%Y%m%d%H`.log
LOG_FILE=${LOG_DIR}/${LOG_FILE_NAME}
#MySQL连接信息
MYSQL_HOST="192.168.1.106"
MYSQL_USER="readonly"
MYSQL_PWD="readonly"
MYSQL_DATABASE="myproj"
#目标HTTP地址
SENDTO_NOTIFY_URL="http://192.168.1.106:8081/notify/notify.jsp"
#SENDTO_NOTIFY_URL="http://api.domain.com/notify/notify.jsp"
#查询数据获得目标ID集合
idList=`mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PWD $MYSQL_DATABASE <<EOF | tail -n +2
SELECT t.tx_no
FROM t_app_log t
WHERE t.create_date BETWEEN DATE_SUB(NOW(),INTERVAL 5 MINUTE) AND NOW()
AND t.result_code='SUCCESS'
ORDER BY t.create_date DESC
LIMIT 50;
EOF`
#迭代集合,通过curl逐个发送HTTP请求
for tid in $idList;
do
echo `date '+%Y-%m-%d %H:%M:%S'` [$tid] `curl -o /dev/null -s -m 3 --connect-timeout 3 -w %{http_code} "${SENDTO_NOTIFY_URL}?tx_no=$tid"` >> ${LOG_FILE}
done
crontab配置(每分钟执行一次)
$ crontab -e #编辑
$ crontab -l #查看
0 0 * * * /bin/bash /usr/local/tengine/logs/cut-log.sh
*/1 * * * * /bin/bash /data/scripts/test_task.sh
00 12 * * * /sbin/ntpdate cn.pool.ntp.org
备注
如果脚本是在Windows环境下编写,拷贝到Linux环境下时可能会提示换行符等错误信息,
可以通过安装dos2unix命令转换:
$ yum -y install dos2unix
$ dos2unix test_task.sh
最新文章
- JQ下的常见插件
- WPF学习之路(十一)布局
- SQL Server 2008 R2——VC++ ADO 操作 存储过程 向datetime类型参数传入空值
- JAVA基础知识之JVM-——自定义类加载器
- Spring Data Jpa配置
- 通过UIBezierPath贝塞尔曲线画圆形、椭圆、矩形
- 在mac上安装hadoop伪分布式
- js不能执行,IE处理方法
- C辗转相除法求最大公约数的实现
- Shuttle ESB(四)——宣布订阅模式实例介绍(1)
- Query插件
- 大数据除法(Large data division)
- redhat6 + 11G RAC 双节点部署
- OC中只有重写没有重载
- W3C 代码标准规范
- ArcGIS中删除“点”附带的对应“文本信息”
- c++类内存分布解析
- Cocos 开发笔记
- 数据流中位数 &#183; data stream median
- centos7里没有ifcfg-eth0只有 ifcfg-ens33(没有Eth0网卡)
热门文章
- [codeforces] 359D Pair of Numbers
- java合并两个有序数组的算法(抛砖引玉)
- POJ1163 The Triangle
- Android键盘面板冲突 布局闪动处理方案
- HDU1083_Courses_课程_C++
- vue实现tab切换
- Android的CheckBox(多选框)
- 第18章 Active控件
- C++ string append()添加文本
- 动态内存管理详解:malloc/free/new/delete/brk/mmap