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

介绍

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

安装

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

安装crond
yum -y install vixie-cron
yum -y install crontabs 加入开启启动服务
chkconfig crond on

启动

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

查看定时任务是否启动
service crond status 将定时任务加入系统自动启动服务
chkconfig crond on 启动定时任务服务
service crond start

系统任务调度

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

  • SHELL:系统要使用哪个shell

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

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

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

 注意:系统定时任务在命令前必须指定用户,一般系统定时任务会使用root用户来执行,系统定时任务还可以配置定时任务的路径,但是要使用“run-parts”,例如每个小时执行文件夹下面的定时任务,用户定时任务不能指定文件夹。
 * * * * 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分别有五个时间段,以空格隔开分别如下:
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可以表示每隔一个小时执行一次。

其它限制:

/etc/cron.deny 该文件中所列用户不允许使用crontab命令

/etc/cron.allow 该文件中所列用户允许使用crontab命令 

/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分钟执行命令

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

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

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

 -/ * * * ./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. URL

    URL的格式:protocol :// hostname[:port] / path / [;parameters][?query]#fragment URL出现了有+,空格,/,?,%,#,& ...

  2. Javascript 构造函数原型继承机制

    我们先聊聊Js的历史,1994年Netscape公司发布了Navigator浏览器0.9班.这是历史上第一个比较成熟的网络浏览器.轰动一时.但是,这个版本的浏览器只能用来浏览,不具备交互功能,最主要的 ...

  3. java内存泄露

    上一篇提到的是java垃圾回收,今天谈谈java的内存泄露. 首先谈下java的内存管理机制: 在Java程序中,我们通常使用new为对象分配内存,而这些内存空间都在堆(Heap)上. public ...

  4. Git 创建本地仓库

    前面已经搭好环境了,现在我们缺的是一个管理版本控制的仓库.这次的实验是在电脑本地创建本地仓库.指定路径 默认的位置是在你所安装Git的目录下.Git的仓库你可以建在你电脑的任何目录下(最好不要包含有中 ...

  5. Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息

    Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息 http://www.cnblogs.com/zhwx/archive/2012/08/28/266055 ...

  6. iOS 为键盘添加隐藏按钮

    // 为键盘添加隐藏按钮 UIToolbar * backView = [[UIToolbar alloc]initWithFrame:CGRectMake(, , , )]; [backView s ...

  7. Oracle 查询出来的数据取第一条

    Oracle 查询出来的数据取第一条 --------------------------------------------------------------------------- 转载自:h ...

  8. 单片机与控制实验(2)——LED点阵显示屏

    一.实验目的和要求 了解LED点阵显示的基本原理和实现方法.掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法. 二.实验设备 单片机测控实验系统 LED点阵显示器实验模块 Keil开发环境 STC ...

  9. Linux 时间时区同步

    $ sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime 上述是修改系统时区 同步时间 1.  安装ntpdate工具 $ sudo apt ...

  10. [Android]依赖注入框架google的dagger

    分享一下Android依赖注入框架--Google升级版Dagger2框架 Google的Dagger2是对上一版squareup的Dagger改版,话不多说直接上项目代码. Dagger2源码 Da ...