首先呢,我们知道crontab是在linux中用于设定在某些时间可以自动执行某些命令的功能。
在linux中使用crontab -e 可以直接到达编辑定时任务的界面。像编辑文本一样。编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件。
我们先来看看标准的一条crontab配置是什么样的。
0 0 * * * /home/workspace/test/drop_cache.sh
而里面的语法是这样的:
分钟 小时 天 月 天每星期 命令
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
所以上面的这个命令的意思就是在每天的零点零分的时候执行这个drop_cache.sh脚本。
我们再给一些例子
1 1,2 * * * reboot 其中的1,2代表每天的1点和2点的第一分钟的时候执行reboot命令,中间的逗号表示不同的时间点
1 1-3 * * * reboot 其中的1-3表示每天的1点到3点的第一分钟的时候执行reboot命令。“-”可以表示一个时间的范围
*/1 * * * * reboot 这里的*/1表示每隔一分钟就执行reboot命令了
那大概搞明白了以后,就可以开始了,我要做的是把要执行的sql语句写进脚本文件里面。因为我使用的是postgresql的数据库所以在这里的示例就是关于postgresql的了。
export PGPASSWORD="123456"
echo $PGPASSWORD
psql -U postgres -d databasename <<_EOT
update t_sys_name set name=1 where id=1;
_EOT
这里的databasename就是你的数据库的名称,上面的password也就是密码了。然后写好以后呢。我们保存为update.sh。放在某个目录下,然后crontab -e 编辑配置文件,加上:
*/5 * * * * /home/workspace/test/update.sh
然后保存退出。这个的意思就是每隔5分钟就执行一次这个update.sh脚本了。
crontab会自动重新加载配置。所以不需要重启,但是如果你想马上生效,也可以重启它,这里附上命令。
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
但是后面我还是发现没生效。结果是因为我没有对这个脚本文件进行权限的分配。
chomd 755 /home/workspace/test/update.sh
给了权限后,脚本就可以定时执行了。这里就是今天crontab的学习过程。希望对你有帮助。有问题欢迎留言!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。