linux脚本能轮循吗,通过Linux定时任务实现定时轮询数据库及发送Http请求
#通过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请求相关推荐
- Linux脚本编程:sudo命令下设置定时任务
Linux脚本编程:sudo命令下设置定时任务 题目要求 编程平台 本地 云端 代码实现 基本思路 解决脚本 其他说明 题目要求 让普通用户使用sudo命令编写一个脚本,脚本内容为:设置定时任务,每隔 ...
- Linux脚本保存管道中的变量,Linux下管道重定向使用以及Shell编程(操作系统)
实验名称:Linux的基本操作 实验目的: 1.了解管道和重定向 2.熟悉基本的Linux脚本的编写 实验环境:Ubuntu 12.4(32位,简体中文) 实验内容: 1.将当前用户目录下的文件清单输 ...
- linux脚本一般放在哪个目录下,Linux Deepin 将脚本放在个人目录下直接执行
在 Linux Deepin 下,如何将 Bash 脚本放在个人目录下并能够不指定路径而直接执行脚本? 今天我们就以这个问题作为切入点,继续讲一下 Bash 的一些基础知识. 现在,我们打开文本编辑器 ...
- linux脚本中如何调用函数,在Linux中如何在Perl脚本中调用函数(在shell脚本中定义)...
我有两个脚本,即 shell_script.sh和perl_script.pl. shell_script.sh:它有函数定义,当从Perl脚本调用时,它将以批处理模式在Linux上执行某些命令. p ...
- linux脚本查看系统内存,二个linux下查看内存使用情况的shell脚本()
摘要 腾兴网为您分享:二个linux下查看内存使用情况的shell脚本(),政务易,悦作业,优化大师,王者荣耀等软件知识,以及单向历app,优路教育app,kimoji,开关电源设计软件,皮皮高清影视 ...
- linux脚本的注释符号是什么,linux的shell编程中的符号`是什么
#! /bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径.$bash $表示系统提示符,$ 表示此用户为普通用户,超级用户的提示符是 ...
- linux 脚本 计划任务,详解在Linux中怎么使用cron计划任务
没有时间运行命令?使用 cron 的计划任务意味着你不用熬夜程序也可以运行. 系统管理员(在许多好处中)的挑战之一是在你该睡觉的时候去运行一些任务.例如,一些任务(包括定期循环运行的任务)需要在没有人 ...
- qt调用Linux脚本范例,QT下实现对Linux Shell调用的几种方法
使用QProcess QThread ============================================ #include int main() { QProcess::exec ...
- linux 脚本中修改时区没有生效,linux系统修改时区,时间,立即生效
时区的配置文件是/etc/sysconfig/clock.用tzselect命令就可以修改这个配置文件,根据命令的提示进行修改就好了. 但是在实际工作中,发现这种方式是不能够使得服务器上的时间设置马上 ...
最新文章
- HTTP1.1协议请求方面参数
- C++:uniform_int_distribution、rand()和mt19937随机数、partial_sum、容器最小值和最大值、accumulate
- java override 访问权限_java 重写(Override)的规则
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- WinForm -- 为TextBox文本框添加鼠标右键菜单
- 穷不可怕,可怕的是“穷人思维”
- 【锋利的JQuery-学习笔记】菜单栏及其2级菜单
- matlab数据分类与识别,Matlab图像识别/检索系列(3)—10行代码完成caltech图象集分类和识别...
- matlab提示用户输入参数,调用函数显示输入参数不足
- javascript 中的prompt 用法
- os.path.join;os.makedirs()
- Linux 使用 iptables屏蔽IP段
- tableau参数_Tableau-参数的设置方法
- 目标检测之FPN网络详解
- 【论文阅读】【BMVC2018】BAM: Bottleneck Attention Module
- codeforces 645 D Robot Rapping Results Report 【树形dp】
- 如何使用Python解锁星河远征军的科幻旅途
- Ubuntu 终端窗口操作快捷键
- ROS2学习笔记(3)什么是ROS2 topics
- MATLAB实现控制系统的根轨迹分析
热门文章
- python语言提供的三个基本数据类型是_python基本数据类型
- 一级计算机电子表格试题,计算机一级考试电子表格题都是出什么样的题目或题型?以及幻灯片?【excel一级考试题目及解析】...
- 中欧 PHP 开发者大会因多元化争议而取消
- mysql编译安装原理_MySQL编译安装全过程
- matplotlib 设置标注方向_Matplotlib绘制带主题及聚类类标的散点图
- 为什么索引不支持模糊查询_百度站长平台查询的关键词排名,为什么与实际不符合?...
- elementui el-upload 删除指定文件
- 服务器系统分区 是啥,服务器系统盘分区
- linux e1000e 网卡驱动,在centos7上安装intel e1000e 网卡驱动
- java partialfunction,Java Relation.partialFunction方法代碼示例