200 ? "200px" : this.width)!important;}
-->

介绍

本篇主要介绍Linux定时任务命令crontab的用法,crontab是定时任务的命令,而crond则是定时任务的启动服务。crontab的定时任务分为系统任务和用户任务,其实二者没有太大的区别。

安装

在centos中crond默认是安装好的,如果没有安装的话执行以下操作

  1. 安装crond
  2. yum -y install vixie-cron
  3. yum -y install crontabs
  4.  
  5. 加入开启启动服务
  6. chkconfig crond on

启动

在Centos中crond服务默认是自动启动的,如果没有启动可以手动启动,具体方法如下。

  1. 查看定时任务是否启动
  2. service crond status
  3.  
  4. 将定时任务加入系统自动启动服务
  5. chkconfig crond on
  6.  
  7. 启动定时任务服务
    service crond start

系统任务调度

系统定时任务一般用来执行一些系统方面的操作,比如日志清理;系统的定时任务可以通过编辑/etc/crontab来设定。

  • SHELL:系统要使用哪个shell

  • PATH:系统定时任务执行的命令的路径,不要把这个PATH和系统环境变量认为是一样,二者没有关系,在系统环境变量里面配置的路径在这里不能生效。

  • MAILTO:用来接收邮件的用户,默认是root,邮箱的内容会保存在"/var/spool/mail/root"文件中。

  • HOME:系统定时任务的家目录。

 注意:系统定时任务在命令前必须指定用户,一般系统定时任务会使用root用户来执行,系统定时任务还可以配置定时任务的路径,但是要使用“run-parts”,例如每个小时执行文件夹下面的定时任务,用户定时任务不能指定文件夹。
  1. * * * * root run-parts /etc/cron.hourly

用户任务调度

用户的定时任务可以通过执行crontab命令来创建,一个用户只会生成一个定时任务文件会以用户名命名,用户定义的定时任务都保存在“/var/spool/cron”目录下,用户任务调度和系统任务调度的时间段是一样的,唯一的区别就是用户任务调度不需要指定用户名,而且也不能使用run-parts参数指定目录。
 

crontab命令选项

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

  • -e:创建和编辑定时任务,默认是创建和编辑当前用户的定时任务,只有root可以创建也编辑其它用户的定时任务。

  • -l:列出当前用户的定时任务,如果使用了-u参数指定了用户那么就是列出指定用户的定时任务。

  • -r:删除当前用户的定时任务,如果使用了-u参数指定了用户那么就是删除指定用户的定时任务。

  • -i:在删除用户命令前加以提示,-i参数不能单独使用需要结合-r参数以前使用。

两种调度方式的不同点:

系统定时任务是整个系统级别的定时任务,只有root用户可以创建,通过在/etc/crontab文件或者是在/etc/cron.d/目录中创建定时任务。

用户定时任务是每个用户都可以创建的定时任务,通过执行crontab -e进行创建,每个用户的定时任务保存在“/var/spool/cron”目录下每个用户自己的文件中。也可以通过“crontab -l”查看用户自己的定时任务

两种调度方式的相同点:

两种定时任务的创建都是永久的,服务器重启后也不会失效;每次创建任务不需要重启crond服务。

crontab任务格式

crontab分别有五个时间段,以空格隔开分别如下:
  1. minute hour day month week command 顺序:分

其中:

  • minute: 表示分钟,可以是从0到59之间的任何整数。

  • hour:表示小时,可以是从0到23之间的任何整数。

  • day:表示日期,可以是从1到31之间的任何整数。

  • month:表示月份,可以是从1到12之间的任何整数。

  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

  • 逗号(,):可以用逗号隔开的值指定一个列表范围,如:“1,2,5,7,8,9”,如果是month则表示这几个月执行该命令。

  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“10-23/2”如果是指小时代表10点到23点每隔2个小时执行一次。例如*/1可以表示每隔一个小时执行一次。

其它限制:

  1. /etc/cron.deny 该文件中所列用户不允许使用crontab命令
  2.  
  3. /etc/cron.allow 该文件中所列用户允许使用crontab命令
  4.  
  5. /var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名

注意:默认的用户的shell,path,mailto,home是没有定义的,可以单独定义用户的这几个变量否则可能会出现用户找不到一些用户软件的命令,具体的定义方法可以参考系统任务的定义,主要还是SHELL、PATH。默认的用户的这几个变量信息如下:

X-Cron-Env:<SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/chen>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=chen>
X-Cron-Env: <USER=chen>

例1:每天的1点到6点和13点到18点,每隔5分钟执行命令

  1. SHELL=/bin/bash
  2. PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin
  3. MAILTO=chen
  4. HOME=/data/backup
  5. */5 01-06,13-18 * * * ./userbackup.sh test

上面定义了每天的1点到6点和13点到18点,每隔5分钟执行命令。

例2:每天9点到18点每隔2个小时执行一次

  1. -/ * * * ./userbackup.sh test

注意:时间范围01-06是指01:00-06:59,命令后面可以使用“;”连接多个命令

总结

定时任务很实用,而且实用方法也很多,有兴趣可以慢慢研究。

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

Linux 定时任务的更多相关文章

  1. linux定时任务crond export变量问题

    linux定时任务crond export变量问题 1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在 crontab里配置了如下内容: 50 17 ...

  2. Linux 定时任务 Crontab命令 详解

    前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...

  3. 如何让Linux定时任务crond以秒为单位执行(如每隔3秒)

    需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,不知道秒,怎么办呢? 第一种方法: 当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如 ...

  4. 工作中linux定时任务的设置及相关配置

    工作中会用到定时任务,来处理以前采集来的数据备份, 每周一凌晨4点执行一次    0 4 * * */1 find/data/templatecdr/oracle/dcndatabak/ -type ...

  5. 如何让linux定时任务crontab按秒执行

    如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...

  6. (转载)Linux定时任务cron配置

    (转载)http://blog.csdn.net/jbgtwang/article/details/7995801 实现linux定时任务有:cron.anacron.at等,这里主要介绍cron服务 ...

  7. linux定时任务crontab的设置

    linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...

  8. Linux实战教学笔记11:linux定时任务

    第十一节 linux定时任务 标签(空格分隔): Linux实战教学笔记 ---更多资料点我查看 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种 ...

  9. linux定时任务访问url

    这次linux定时任务设置成功,也算是自己学习linux中一个小小的里程碑.:) 撒花撒花--- 以下操作均是在ubuntu 下操作的,亲测有效,其他的linux系统还望亲们自己去查.鞠躬感谢! 1 ...

随机推荐

  1. 【转】SqlServer将没有log文件的数据库文件附加到服务器中

    原文链接: http://www.cnblogs.com/xdotnet/p/attach_sqlserver_database_file_without_log_files.html 原作者删除了原 ...

  2. x

    笔记 { 计算机 { 底层 { 程序运行 } 信息学 { 网络 { 网络信息安全 } 算法 { 算法 拟合 编译解释词法分析 } 编程语言 { C语言 嵌入式C++ } 黑客 } } 安卓 { 软件 ...

  3. AES加密解密通用版Object-C / C# / JAVA

    1.无向量 128位 /// <summary> /// AES加密(无向量) /// </summary> /// <param name="plainByt ...

  4. display:inline-block的间隙问题和解决办法

    1.display:inline-block在水平方向的间隙: 代码如下: <style type="text/css"> *{margin:0; padding:0; ...

  5. html学习第三天—— 第13,14章

    颜色值缩写 关于颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半. 例子1: p{color:#000000;} 可以缩写为: p{color: # ...

  6. Effective C++ 笔记1

    条款1:视C++为一个语言联邦 1.C.Object-Oriented C++.Template C++ .STL 组成了C++,高效编程取决你使用C++的哪一部分 条款2:尽量用const ,enu ...

  7. mongoose数据库连接和操作

    var mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/hometown'); var db = ...

  8. 【Asp.Net MVC】日常---路由

    想要这样的路由 不带id:http://test.mymong.com/Home/List.html 带id:http://test.mymong.com/Home/Del/561755ba3af24 ...

  9. 压力测试相关之ab命令

    1. 短时压力测试工具 ab 命令(apache的工具) 关键指标: Requests per second:    98.52 [#/sec] (mean)      ###平均每秒的请求数 Tim ...

  10. SOAPUI使用教程-REST Service Mocking

    REST服务模拟 REST服务模拟功能允许您创建一个REST服务模拟器-MockService . 好处 RESTMockServices可用于例如: Web服务的原型 ——几秒内从请求生成一个完整的 ...