定时任务 Crontab命令 详解

来源:互联网 发布:打死不看右下角软件 编辑:程序博客网 时间:2024/06/04 19:14

http://www.centoscn.com/CentOS/help/2014/1030/4025.html


前言

crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较高,一个要求你的程序是24X7小时不宕机,一个是 要求你的调度程序比较可靠,实际工作中,90%的程序都没有必要花这么多时间和精力去解决上面的两个问题的,只需要写好自己的业务逻辑,通过crond这 个工业级程序去调度就行了,crond的可靠性,健壮性,大家应该是毫无疑问的。

 

crontab简易入门

假设我要设置一个任务,每分钟就要做一个数据同步,这个同步脚本的路径是/home/blue/do/rsyncfile.sh,那么我可以在这么配置,使用blue用户,在终端输入

crontab -e# 此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。#分 时 日 月 周      |<==============任务的完整命令行  *  *  *  *  *       /home/blue/do/rsyncfile.sh

默认情况下,任何使用者只要不被列入 /etc/cron.deny 当中,那么他就可以直接下达『 crontab -e 』去编辑自己的例行性命令了!整个过程就如同上面提到的,会进入 vi 的编辑画面, 然后以一个工作一行来编辑,编辑完毕之后输入『 :wq 』储存后离开 vi 就可以了! 

假如我们需要修改为每5分钟运行数据同步的脚本,那么同样使用 crontab -e 进入编辑:

*/5 * * * *  /home/blue/do/rsyncfile.sh

假如服务器出了问题,有一天的数据没有同步,于是我们就需要补数据了,假设这个补数据的脚本是/home/blue/do /rsyncfile_day.sh,但是白天是高峰期,晚上用户不多,是低峰期,我们补数据会占用大量带宽,尤其是白天,会影响正常业务,所以一般我们 可以让补数据任务在凌晨2点开始跑,那么同样使用crontab -e 进入编辑:
0 2 1 4 *  /home/blue/do/rsyncfile_day.sh

这样,在4月1号凌晨2点0分就会开始启动我们的补数据的脚本了。

同步数据,在互联网公司是再平常不过的任务了,这里大家可以看到crontab的魅力所在了,只需要写最简单的业务逻辑,把调度交给crond做,就完成了一个可靠性很高的一项任务了,如果要自己去额外写这种调度程序,不知道要花多少精力才能做到可靠稳定。

crontab的语法

crontab [-u username] [-l|-e|-r]选项与参数:-u  :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;-e  :编辑 crontab 的工作内容-l  :查阅 crontab 的工作内容-r  :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑

查询使用者目前的 crontab 内容:

1crontab -l*/5 * * * *  /home/blue/do/rsyncfile.sh0 2 1 4 *  /home/blue/do/rsyncfile_day.sh

清空使用者目前的 crontab:
crontab -rcrontab -lno crontab for blue

如果你想删除当前用户的某一个crontab任务,那么使用crontab -e进入编辑器,再删除对应的任务














0 0
原创粉丝点击