本次来说说Linux crontab定时任务来执行shell脚本文件,以及怎么通过shell脚本来执行sql语句;
其实crontab跟spring quartz定时任务是差不多的意思,在我看来是完全一样的;
像这种适合的场景,一般用于简单的对数据进行操作,适合没有复杂逻辑的操作,比如本次因为活动需要将某个商品的价格调为活动价,像这种逻辑不是很复杂的,能通过简单的sql就
能完成的就非常适合用这个定时任务了,>>
如图本次因为活动需要将原价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';"
根据上图根据自己的数据库来调整响应的参数,参数意思都标清除了,每个字段都标的很清楚了的,
还有另外一种写法是将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色彩视图的话会看到文件颜色会变为绿色的:
好了,最后就是新建一个定时任务了:命令:crontab -e
新建一行:0 0 1 10 * /home/she/shu.sh 意思为10月1日0点执行:
这个时间设置有点类似于quartz的时间设置,但又不完全相同: 依次为:分钟,小时,日,月,星期,
编辑好了之后以:wq方式保存,跟vim编辑器保存方式相同.
最后上结果:
成功执行了,根据自己的业务逻辑调整sql其实很多定时任务都可以以这种方式来完成.
完!!!