本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处)

  crontab是一个用来设置、删除或显示供守护进程cron执行的定时任务的命令。每一个用户都可以拥有属于自己的定时任务,定时任务文件默认以用户名命名,并放在/var/spool/cron目录,该目录普通用户无访问权限。

  可以通过cron.allow 和 cron.deny文件管理用户使用cron服务的权限。如果cron.allow存在,用户必须列在其中才会被允许使用cron服务;如果cron.deny存在,被列在其中的用户禁止使用cron服务;如果两者都不存在,只有超级用户才能使用cron服务。在CentOS中,这两个文件放在/etc中,默认只存在cron.deny文件,且为空。这就表示在CentOS中,默认所有的用户均有cron的使用权限。

1. 命令格式

  crontab [-u user] file
  crontab [-u user] [-l | -r | -e] [-i] [-s]
  crontab -n [ hostname ]
  crontab -c

2. 命令功能

  为个人用户维护定时任务文件

3. 命令选项

  -u user

    编辑某个用户的cron,只用root可以使用此参数为别的用户设置cron服务。也可用于给用户指定crontab文件。

  -l

    列出当前用户的crontab。

  -r

    删除当前用户的crontab。

  -e

    编辑当前用户的crontab,默认使用vi,或者是由 VISUAL或EDITOR环境变量指定的编辑器。

  -i

    与-r一起使用,用来询问用户是否直接删除crontab。

4. 实例

  实例1:列出当前用户的定时任务

[::][dodmaster@mha3 ~]$ crontab -l   * *  $HOME/.DailyShell/hislogclear.sh   * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/voice  * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/data/  * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/sms/

  实例2:root用户编辑用户martin的定时任务

[::][root@mha3 ~]# crontab -u martin -e

  实例3:为用户martin指定定时任务文件

[::][root@mha3 ~]# crontab -u martin martincron

5. cron文件语法

  首先,我们打开/etc/crontab文件,我们将会看到如下内容:

[::][dodmaster@mha3 etc]$ cat /etc/crontab  SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/  # For details see man  crontabs  # Example of job definition: # .---------------- minute ( - ) # |  .------------- hour ( - ) # |  |  .---------- day of month ( - ) # |  |  |  .------- month ( - ) OR jan,feb,mar,apr ... # |  |  |  |  .---- day of week ( - ) (Sunday= or ) OR sun,mon,tue,wed,thu,fri,sat # |  |  |  |  | # *  *  *  *  * user-name command to be executed

  该文件是存放系统执行的定时计划,其中前四行用于设置cron服务运行的环境变量:SHELL、PATH、HOME分别指定了cron服务运行时的SHELL环境变量、PATH环境变量和HOME环境变量,这里不再赘述。MAILTO则表示cron运行的任务输出以电子邮件的形式发送到指定用户,如果该变量的值为空,则不会发送邮件。余下几行的内容说明了系统定时任务的具体书写格式。

 minute  分钟,取值范围0-59
 hour  小时,取值范围0-23
 day of month  日,取值范围1-31
 month  月,取值范围1-12,或者使用英文缩写jan,feb,mar,apr ...
 day of week  星期,取值范围0-6,0或7表示星期日,或者使用英文缩写sun,mon,tue,wed,thu,fri,sat
 user-name  执行该定时任务的用户
 command  具体执行的命令,可以是一个简单的命令,也可以是一个脚本,或者是一个目录。如果是一个目录,则表示执行目录中的所有脚本,目录的前面必须加上run-parts。

  1)星号(*)表示取值范围内的所有值。例如,*在hour的位置,表示每小时执行一次。

  2)连字符(-)表示一个范围。例如,8-12表示8、9、10、11、12。

  3)逗号(,)表示分割指定的数值。例如:3,5-7,9表示3,5,6,7,9。

  4)正斜杠(/)表示步进值。例如,分钟的位置为*/5,表示每五分钟执行一次。

  除了root用户以外的所有用户定义的crontab计划任务都存放在/var/spool/cron目录,通过crontab -e命令编辑,格式与/etc/crontab相同,可以不用指定user-name。

  cron服务会每分钟检查一次/etc/crontab、/etc/cron.d/和/var/spool/cron/中的所有文件,并依此执行。

6. 实例

  实例1:每周末的凌晨一点钟执行一次系统的raid-check

  * * Sun root /usr/sbin/raid-check

  实例2:每天的4:02am分root用户执行/etc/cron.daily目录下的所有脚本,run-parts参数表示执行后面目录中的所有脚本。

  * * * root run-parts /etc/cron.daily

  实例3:每天的8-18每四小时,dodmaster用户执行hislogclear.sh脚本,即8:44,12:44,16:44,20:44四个时间点,会执行该脚本。

[::][dodmaster@mha3 ~]$ crontab -l  8-20/4 * * * $HOME/.DailyShell/hislogclear.sh 

  实例4:每五分钟执行一次

*/ * * * * echo "every five minute to do it" >> time.txt 

  实例5:每个工作日下午八点执行

 20 * * 1-5 echo "every workday 20:00 to do it" >> time.txt

  实例6:每分钟的30秒时执行,因为cron服务是每分钟被唤醒一次,所以要执行精确到秒的任务需要借助sleep命令。

* * * * * sleep ; echo "every minute 30 second to do it" >> time.txt

  实例7:每20秒执行一次,即表示在每分钟的0秒、20秒、40秒各执行一次(也可以是其他的步长是20秒的值,例如:5s、25s、45s)

* * * * * echo "every 20 second to do it" >> time.txt * * * * * sleep ; echo "every 20 second to do it" >> time.txt * * * * * sleep ; echo "every 20 second to do it" >> time.txt

参考资料:

http://www.cnblogs.com/dingyingsi/archive/2013/04/16/3023623.html

http://blog.csdn.net/xiyuan1999/article/details/8160998

http://blog.chinaunix.net/uid-7552018-id-182133.html

工作中常用的Linux命令:crontab命令,定时任务执行命令的更多相关文章

  1. 工作中常用的Linux命令:crontab命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...

  2. 工作中常用的Linux命令:mkdir命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...

  3. 工作中常用的Linux命令:ipcs/ipcrm命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式 ipcs [resource-option ...

  4. 工作中常用的Linux命令:find命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6056571.html (转载请注明出处) 1.命令格式 find [-H] [-L] [-P] [-D deb ...

  5. 【基础】工作中常用的linux命令,经常会被面试官问到

    前言 面试经常会问到一些Linux操作命令,下面就工作中常用的和面试问的频率较高的命令做详细描述. 常用命令 修改密码:passwd 用户名 切换用户名:su 用户名 查看当前路径:pwd 调整路径: ...

  6. 工作中常用的 Linux 命令

    awk 示例: env变量值如下,需要获得pkg_url的链接值: {"name": "michael", "sex": "mal ...

  7. 在工作中常用的Linux命令

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 之前写过一篇 < 在公司做的项目和自己在学校做 ...

  8. 工作中常用的Linux命令:目录

    工作两三年,每天都和Linux打交道,但每每使用Linux命令的时候却会像提笔忘字般不知如何使用,常常查手册或到网上找资料.此系列文章主要是为了方便自己在使用命令时随时可查阅.鄙人才疏学浅,文中若有任 ...

  9. 工作中常用的Linux命令介绍与实践

    前言 做后端开发的同学,一般都会接触到服务器,而我们现在的系统用的比较多的服务器系统就是linux了,平时多多少少也会接触到一些linux下的shell命令.我们来介绍下linux一些常用的命令和使用 ...

随机推荐

  1. mysql——创建表、修改表、删除表(概念详细讲解)

    一.创建一个数据表 create table 表名 ( 列名1 数据类型1 [完整性约束条件], 列名2 数据类型2 [完整性约束条件], 列名3 数据类型3 [完整性约束条件], 列名4 数据类型4 ...

  2. 使用CompletableFuture进行异步任务编排

    1.JDK5引入了Future进行异步任务的处理,Future 的接口主要方法有以下几个: (1)boolean cancel (boolean mayInterruptIfRunning) 取消任务 ...

  3. 格式化hdfs以及namnode没启动

    先stop-all.sh 删除hdfs-site.xml中的这两个目录 然后删除core-site.xml 中的这个目录 然后格式化hdfs hdfs namenode -format 即可启动成功 ...

  4. python简单验证码识别

    在学习python通过接口自动登录网站时,用户名密码.cookies.headers都好解决但是在碰到验证码这个时就有点棘手了:于是通过网上看贴,看官网完成了对简单验证码的识别,如果是复杂的请看大神的 ...

  5. 四则运算计算器的微信小程序_2 运算

    js文件: function isOperator(value) {   var operatorString = '+-*/()×÷';   return operatorString.indexO ...

  6. Docker:Swarm + Stack 一站式部署容器集群

    参考1 参考2 1.注意docker的版本,yum默认安装的版本比较低,可能出现 unsupported Compose file version: 3.7 docker版本升级 2.docker-c ...

  7. 数据绑定-集合List绑定

    users.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  8. 将数据导出到 excel ,然后下载下来

    private static final String SHEET_NAME = "培养计划表"; /** * @param response * @param trainingN ...

  9. docker之常用命令

    1) docker run -p : --name mysql -v d:/docker/mysql/conf:/etc/mysql/conf.d -v d:/docker/mysql/logs:/l ...

  10. pgsql sql字段拼接

    1.  一条记录数据字段拼接 语法:concat_ws('拼接符号',字段名,more fields) 例子:concat_ws(':',username,sex)2. 多条记录字段拼接 语法:con ...