利用shell设置每隔三天运行一次sql文件

前言

我从网络上查了老半天,全都是每隔几天运行一次,但是在第二月一日便会重置,例如1月31日运行了,2月1日又运行了,这明显没有隔三天。
我一咬牙一跺脚,干脆自己写一个脚本得了。
我一共编辑了两个shell脚本,彻底解决了月初重置定时的问题。

一、main.sh

首先按照秒数记录首次执行定时的时间。
然后以变量的形式将执行定时的时间以秒数赋值给变量。
设置一个三天的间隔时间,同样是以秒计算。
然后做一个判断,是否中间间隔了3乘24*3600多秒。
是就运行sql并运行assist.sh,不是就不运行。

二、assist.sh

这个脚本用来修改main.sh的【首先按照秒数记录首次执行定时的时间】 这个的时间的。下一次运行的时候就是用这个常量和启动定时的时间变量之间的比较了。

三、定时

定时只要设置成每天运行即可,因为是秒数之间的比较是否相差了3乘24*3600这么多,所以不存在月初重置的情况,实测可行。

四、直接上代码

main.sh
#!/bin/bash
#filename: main.sh
#这里的1631444400这个数是当前时间的以秒计算的时间,可以网上搜索一下当前是多少秒
last_run_time=1631444400
current=`date +%Y-%m-%d`
curr_run_time=`date -d "$current 19:00" +%s`
seconds=$((3*24*3600))
if [[ $((curr_run_time - last_run_time)) -ge $seconds ]] ; then
        sh /home/view/yhm/assist.sh
        sqlplus 数据库用户名/密码 < /home/view/yhm/CardAcc.sql >> /home/view/yhm/cardacc.txt
fi


assist.sh
#!/bin/bash
#filename: assist.sh
current=`date +%Y-%m-%d`
curr_run_time=`date -d "$current 19:00" +%s`
sed -i "s/last_run_time=.*/last_run_time=${curr_run_time}/" /home/view/yhm/main.sh





创建完这两个文件后别忘了设置777权限哦
chmod 777 main.sh
chmod 777 assist.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值