本次来说说Linux  crontab定时任务来执行shell脚本文件,以及怎么通过shell脚本来执行sql语句;

其实crontab跟spring quartz定时任务是差不多的意思,在我看来是完全一样的;

像这种适合的场景,一般用于简单的对数据进行操作,适合没有复杂逻辑的操作,比如本次因为活动需要将某个商品的价格调为活动价,像这种逻辑不是很复杂的,能通过简单的sql就

能完成的就非常适合用这个定时任务了,>>

记录mysql shell执行 shell执行mysql语句_定时任务

如图本次因为活动需要将原价4388元的ipad价格调为活动价4200,但必须要在10月1号生效,在10月1号之前保持原价,

 下面实现需求:

1.首先本次操作的文件在服务器的目录为/home/she/下,首先在she文件夹下新建文件shu.sh文件,内容为(这里需要会一点shell语言功底):



#!/bin/sh
user=bizme
pass=www123*
db=qianzhao
tablename=ecshop_items
mysql -u$user -p$pass -D $db -e "UPDATE ecshop_items SET price=4200 WHERE id='106U9FQUM4C1Q_12_21';"



记录mysql shell执行 shell执行mysql语句_定时任务_02

 

根据上图根据自己的数据库来调整响应的参数,参数意思都标清除了,每个字段都标的很清楚了的,

 还有另外一种写法是将sql语句单独写到一个文件中然后执行执行响应的.sql文件,具体是:



#!/bin/sh
user=bizme
 pass=www123*
 db=qianzhao
 tablename=ecshop_items
mysql -u$user -p$pass -D $db < /home/she/city.sql



然后在/home/she文件加下新建一个city.sql文件内容就是上面需要执行的sql:



UPDATE ecshop_items SET price=4200 WHERE id='106U9FQUM4C1Q_12_21';



好了,文件都建好了之后现在需要改下权限不然无法执行的,将刚刚新建的.sh脚本文件改下权限,命令为:chmod 744 shu.sh

如果使用的是标准的linux色彩视图的话会看到文件颜色会变为绿色的:

记录mysql shell执行 shell执行mysql语句_数据库_03

好了,最后就是新建一个定时任务了:命令:crontab -e

新建一行:0 0 1 10 * /home/she/shu.sh  意思为10月1日0点执行:

记录mysql shell执行 shell执行mysql语句_记录mysql shell执行_04

这个时间设置有点类似于quartz的时间设置,但又不完全相同:  依次为:分钟,小时,日,月,星期,

编辑好了之后以:wq方式保存,跟vim编辑器保存方式相同.

最后上结果:

记录mysql shell执行 shell执行mysql语句_定时任务_05

成功执行了,根据自己的业务逻辑调整sql其实很多定时任务都可以以这种方式来完成.

完!!!