#通过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 <

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

linux脚本能轮循吗,通过Linux定时任务实现定时轮询数据库及发送Http请求相关推荐

  1. Linux脚本编程:sudo命令下设置定时任务

    Linux脚本编程:sudo命令下设置定时任务 题目要求 编程平台 本地 云端 代码实现 基本思路 解决脚本 其他说明 题目要求 让普通用户使用sudo命令编写一个脚本,脚本内容为:设置定时任务,每隔 ...

  2. Linux脚本保存管道中的变量,Linux下管道重定向使用以及Shell编程(操作系统)

    实验名称:Linux的基本操作 实验目的: 1.了解管道和重定向 2.熟悉基本的Linux脚本的编写 实验环境:Ubuntu 12.4(32位,简体中文) 实验内容: 1.将当前用户目录下的文件清单输 ...

  3. linux脚本一般放在哪个目录下,Linux Deepin 将脚本放在个人目录下直接执行

    在 Linux Deepin 下,如何将 Bash 脚本放在个人目录下并能够不指定路径而直接执行脚本? 今天我们就以这个问题作为切入点,继续讲一下 Bash 的一些基础知识. 现在,我们打开文本编辑器 ...

  4. linux脚本中如何调用函数,在Linux中如何在Perl脚本中调用函数(在shell脚本中定义)...

    我有两个脚本,即 shell_script.sh和perl_script.pl. shell_script.sh:它有函数定义,当从Perl脚本调用时,它将以批处理模式在Linux上执行某些命令. p ...

  5. linux脚本查看系统内存,二个linux下查看内存使用情况的shell脚本()

    摘要 腾兴网为您分享:二个linux下查看内存使用情况的shell脚本(),政务易,悦作业,优化大师,王者荣耀等软件知识,以及单向历app,优路教育app,kimoji,开关电源设计软件,皮皮高清影视 ...

  6. linux脚本的注释符号是什么,linux的shell编程中的符号`是什么

    #! /bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径.$bash $表示系统提示符,$ 表示此用户为普通用户,超级用户的提示符是 ...

  7. linux 脚本 计划任务,详解在Linux中怎么使用cron计划任务

    没有时间运行命令?使用 cron 的计划任务意味着你不用熬夜程序也可以运行. 系统管理员(在许多好处中)的挑战之一是在你该睡觉的时候去运行一些任务.例如,一些任务(包括定期循环运行的任务)需要在没有人 ...

  8. qt调用Linux脚本范例,QT下实现对Linux Shell调用的几种方法

    使用QProcess QThread ============================================ #include int main() { QProcess::exec ...

  9. linux 脚本中修改时区没有生效,linux系统修改时区,时间,立即生效

    时区的配置文件是/etc/sysconfig/clock.用tzselect命令就可以修改这个配置文件,根据命令的提示进行修改就好了. 但是在实际工作中,发现这种方式是不能够使得服务器上的时间设置马上 ...

最新文章

  1. HTTP1.1协议请求方面参数
  2. C++:uniform_int_distribution、rand()和mt19937随机数、partial_sum、容器最小值和最大值、accumulate
  3. java override 访问权限_java 重写(Override)的规则
  4. Linux下gcc编译中关于头文件与库文件搜索路径相关问题
  5. WinForm -- 为TextBox文本框添加鼠标右键菜单
  6. 穷不可怕,可怕的是“穷人思维”
  7. 【锋利的JQuery-学习笔记】菜单栏及其2级菜单
  8. matlab数据分类与识别,Matlab图像识别/检索系列(3)—10行代码完成caltech图象集分类和识别...
  9. matlab提示用户输入参数,调用函数显示输入参数不足
  10. javascript 中的prompt 用法
  11. os.path.join;os.makedirs()
  12. Linux 使用 iptables屏蔽IP段
  13. tableau参数_Tableau-参数的设置方法
  14. 目标检测之FPN网络详解
  15. 【论文阅读】【BMVC2018】BAM: Bottleneck Attention Module
  16. codeforces 645 D Robot Rapping Results Report 【树形dp】
  17. 如何使用Python解锁星河远征军的科幻旅途
  18. Ubuntu 终端窗口操作快捷键
  19. ROS2学习笔记(3)什么是ROS2 topics
  20. MATLAB实现控制系统的根轨迹分析

热门文章

  1. python语言提供的三个基本数据类型是_python基本数据类型
  2. 一级计算机电子表格试题,计算机一级考试电子表格题都是出什么样的题目或题型?以及幻灯片?【excel一级考试题目及解析】...
  3. 中欧 PHP 开发者大会因多元化争议而取消
  4. mysql编译安装原理_MySQL编译安装全过程
  5. matplotlib 设置标注方向_Matplotlib绘制带主题及聚类类标的散点图
  6. 为什么索引不支持模糊查询_百度站长平台查询的关键词排名,为什么与实际不符合?...
  7. elementui el-upload 删除指定文件
  8. 服务器系统分区 是啥,服务器系统盘分区
  9. linux e1000e 网卡驱动,在centos7上安装intel e1000e 网卡驱动
  10. java partialfunction,Java Relation.partialFunction方法代碼示例