Crontab定时任务配置

转载 2016年05月30日 19:00:17

转载:http://www.cnblogs.com/kerrycode/p/3238346.html

作者:潇湘隐者


CRONTAB概念/介绍

      crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。

cron 系统调度进程。 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。系统管理员可以通过cron.deny 和 cron.allow 这两个文件来禁止或允许用户拥有自己的crontab文件。

1: crontab文件一般位于/etc/下,这里面存放系统运行的的调度程序。

[root@localhost cron]# more /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly

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

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

2:每个用户都会生成一个自动生成一个自己的crontab文件,一般位于/var/spool/cron目录下

[root@localhost cron]# cd /var/spool/cron

[root@localhost cron]# ls

oracle root

如果你用命令crontab -r 就会删除当前用户的crontab文件,例如你切换到oracle账号下,执行了该命令,那么/var/spool/cron/oracle文件就会删除,如果要创建该文件只需要用crontab -e命令即可。注意,普通用户一般没有权限访问/var/spool/cron

3:cron.deny 与 cron.allow文件

/etc/cron.deny 表示不能使用crontab 命令的用户

/etc/cron.allow 表示能使用crontab的用户。

默认情况下,cron.allow文件不存在。如果两个文件同时存在,那么/etc/cron.allow 优先。如果两个文件都不存在,那么只有超级用户可以安排作业。

但是让人纳闷的是cron.deny文件是空的,如下所示

[oracle@localhost etc]$ more cron.deny

4:cron.hourly,cron.daily,cron.monthly,cron.weekly

[oracle@localhost etc]$ ls -lrt cron*

-rw-r--r-- 1 root root 255 Sep 21 2004 crontab

-rw-r--r-- 1 root root 0 May 16 2008 cron.deny

cron.hourly:

total 0

cron.monthly:

total 8

-rwxr-xr-x 1 root root 278 Sep 29 2004 0anacron

cron.weekly:

total 16

-rwxr-xr-x 1 root root 277 Sep 29 2004 0anacron

-rwxr-xr-x 1 root root 414 Jun 6 2007 00-makewhatis.cron

cron.daily:

total 60

-rwxr-xr-x 1 root root 286 Aug 14 2004 tmpwatch

-rwxr-xr-x 1 root root 276 Sep 29 2004 0anacron

-rwxr-xr-x 1 root root 2133 Dec 1 2004 prelink

-rwxr-xr-x 1 root root 180 May 2 2006 logrotate

-rwxr-xr-x 1 root root 418 Jun 6 2007 00-makewhatis.cron

-rwxr-xr-x 1 root root 104 Aug 2 2007 rpm

-rwxr-xr-x 1 root root 121 Aug 22 2007 slocate.cron

lrwxrwxrwx 1 root root 28 May 16 2008 00-logwatch -> ../log.d/scripts/logwatch.pl

cron.d:

total 12

-rw------- 1 root root 366 Jun 12 2007 sa-update

-rw-r--r-- 1 root root 188 Jul 18 2007 sysstat

 

CRONTAB在线手册

注意:不同版本的Linux系统,可能crontab手册内容有所出入,请以实际版本为准。

[oracle@localhost ~]$ man crontab | more

复制代码
CRONTAB(1)                                                          CRONTAB(1)



NAME
       crontab - maintain crontab files for individual users (ISC Cron V4.1)

SYNOPSIS
       crontab [-u user] file
       crontab [-u user] [-l | -r | -e] [-i] [-s]

DESCRIPTION
       Crontab  is  the  program used to install, deinstall or list the tables
       used to drive the cron(8) daemon in ISC Cron.  Each user can have their
       own  crontab,  and though these are files in /var/spool/ , they are not
       intended to be edited directly. For SELinux in mls  mode  can  be  even
       more crontabs - for each range. For more see selinux(8).

       If the cron.allow file exists, then you must be listed therein in order
       to be allowed to use this command.  If the  cron.allow  file  does  not
       exist but the cron.deny file does exist, then you must not be listed in
       the cron.deny file in order to use this command.  If neither  of  these
       files  exists, only the super user will be allowed to use this command.


OPTIONS
       -u     It specifies the name  of  the  user  whose  crontab  is  to  be
              tweaked.   If  this option is not given, crontab examines "your"
              crontab, i.e., the crontab of the person executing the  command.
              Note  that su(8) can confuse crontab and that if you are running
              inside of su(8) you should always use the -u option for safety’s
              sake.   The  first form of this command is used to install a new
              crontab from some named file or standard input  if  the  pseudo-
              filename "-" is given.

       -l     The current crontab will be displayed on standard output.

       -r     The current crontab will be removed.

       -e     This option is used to edit the current crontab using the editor
              specified by the VISUAL or EDITOR environment variables.   After
              you exit from the editor, the modified crontab will be installed
              automatically.

       -i     This option modifies the -r option to  prompt  the  user  for  a
              ’y/Y’ response before actually removing the crontab.

       -s     It will append the current SELinux security context string as an
              MLS_LEVEL setting to the crontab file before editing /  replace-
              ment  occurs - see the documentation of MLS_LEVEL in crontab(5).

SEE ALSO
       crontab(5), cron(8)

FILES
       /etc/cron.allow
       /etc/cron.deny

STANDARDS
       The crontab command conforms to IEEE Std1003.2-1992 (‘‘POSIX’’).   This
       new  command  syntax  differs  from previous versions of Vixie Cron, as
       well as from the classic SVR3 syntax.

DIAGNOSTICS
       A fairly informative usage message appears if you run  it  with  a  bad
       command line.

AUTHOR
       Paul Vixie <vixie@isc.org>



4th Berkeley Distribution       16 Januar 2007                      CRONTAB(1)
复制代码
View Code

 

CRONTAB语法及应用

 

1:查看当前用户的定时任务

[oracle@localhost ~]$ crontab -l

* * * * * /home/oracle/test.sh >/dev/null 2>&1

2:编辑当前用户的定时任务

 

可以在编辑状态修改、删除、新增一些定时任务。注释一般用#

[oracle@localhost ~]$ crontab -e

3:删除当前用户的定时任务

[root@localhost ~]# crontab -r

[root@localhost ~]# crontab -l

no crontab for root

4:

 

如下所示,一般crontab文件里面的定时任务格式如下所示:

59 23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null 2>&1

crontab 文件中每个条目中各个域的意义和格式:

第一列 分钟: 1——59

第二列 小时: 1——23(0表示子夜)

第三列 日 : 1——31

第四列 月 : 1——12

第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此类推)

第六列 要运行的命令

我们暂且用C1、C2、C3、C4、C5、C6代表这六列,前面五列通过组合方式来决定执行脚本的频率,最小频率为每分钟执行一次,其中Cn可以用 * ; */n ; T1-T2; a,b,c; 四种形式来表示:

当 C1 为 * 时表示每分钟都要执行脚本,C2 为 * 时表示每小时都要执行程式,依次类推.....

当 C1 为 T1-T2 时表示从第 T1 分钟到第 T2 分钟这段时间内要执行,C2 为 T1-T2 时表示从第 T1 到第 T2 小时都要执行,依次类推....

当 C1 为 */n 时表示每 n 分钟的时间间隔执行一次,C2 为 */n 表示每隔n小时的间隔执行一次,依次类推.....

当 C1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,C2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,依次类推....

下面列举几个例子供大家参考

1: 59 23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null 2>&1

表示每天23点59分执行脚本/home/oracle/scripts/alert_log_archive.sh

2: */5 * * * * /home/oracle/scripts/monitoring_alert_log.sh >/dev/null 2>&1

表示每5分钟执行一次脚本/home/oracle/scripts/monitoring_alert_log.sh

3: 0 20 * * 1-5 mail -s "**********" kerry@domain.name < /tmp/maildata

周一到周五每天下午 20:00 寄一封信给 kerry@domain.name

..............................................

关于 >/dev/null 2>&1 的解释:

0表示键盘输入

1表示标准输出

2表示错误输出.

我们首先创建test.sh脚本如下:

#! /bin/sh

echo "hello, everybody, now is " `date`

date >> test.txt

然后添加作业

* * * * * /home/oracle/test.sh >/home/oracle/log.txt & 默认值为1,即和下面命令一致

* * * * * /home/oracle/test.sh 1>/home/oracle/log.txt &

* * * * * /home/oracle/test.sh 2>/home/oracle/log.txt &

* * * * * /home/oracle/test.sh 2>/home/oracle/log.txt 2>&1 &

1,2将tesh.sh 命令输出重定向到log.txt, 即输出内容不打印到屏幕上,而是输出到log.txt文件中。如果你需要追加而不是覆盖,可以用 >>代替>

2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件log.txt。

&1 表示的是文件描述1,表示标准输出,如果这里少了&就成了数字1,就表示重定向到文件1。

注意事项:

配置定时任务时,需要注意两个问题:

1: 在SHELL中设置了必要的环境变量;例如一个shell脚本手工执行OK,但是配置成后台作业执行时,获取不到ORACLE的环境变量,这是因为crontab环境变量问题,Crontab的环境默认情况下并不包含系统中当前用户的环境。所以,你需要在shell脚本中添加必要的环境变量的设置

2: 尽量所有的文件都采用完全路径方式,避免使用相对路径。

 

参考资料:

http://blog.csdn.net/tianlesoftware/article/details/5315039

http://yke2000.blog.163.com/blog/static/319238142010147308843/

作者:潇湘隐者

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.


日志文件切割服务logrotate配置及crontab定时任务的使用

1.下载logrotate 在Fedora和CentOS安装 yum install logrotate crontabs Debian和Ubuntu上 apt-get i...

linux定时任务的设置 crontab 配置指南

原文地址 :  http://blog.csdn.net/xiyuan1999/article/details/8160998 2012-11-08 10:26 7756人阅读 评论(0) 收藏...

linux定时任务的设置 crontab 配置指南

为当前用户创建cron服务 1.  键入 crontab  -e 编辑crontab服务文件       例如 文件内容如下:      */2 * * * * /bin/sh /h...
  • c1958
  • c1958
  • 2017年07月26日 23:00
  • 110

linux 定时任务——crontab 的配置和使用

cron 来源于希腊单词 chronos(意为“时间”),是 linux 系统下一个自动执行指定任务的程序。 为当前用户创建 cron 服务 1.  键入 crontab  -e 编辑crontab服...

linux定时任务的设置 crontab 配置指南

为当前用户创建cron服务 1.  键入 crontab  -e 编辑crontab服务文件       例如 文件内容如下:      */2 * * * * /bin/sh /h...

Linux下定时任务配置-crontab

实际中经常有一些任务需要定期执行,人工操作比较麻烦,如果定时执行将会省去很多人力,还可以在一些资源占用不多的时间段执行,linux下crontab命令就实现了这一便捷的功能,实现脚本的自动化运行。常用...

linux定时任务的设置 crontab 配置指南

为当前用户创建cron服务 1.  键入 crontab  -e 编辑crontab服务文件       例如 文件内容如下:      */2 * * * * /bin/sh /h...

linux定时任务crontab配置

本文参考 http://blog.csdn.net/jbgtwang/article/details/7995801 实现linux的定时任务有好几种,这里详细介绍下cron服务名词解释:cron...

Crontab定时任务配置

CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 cron 系统调度进程。 可以使用它...

Linux Crontab 定时任务 命令详解

  • 2013年05月23日 18:07
  • 24KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Crontab定时任务配置
举报原因:
原因补充:

(最多只允许输入30个字)