crontab定期义务计划方式6165金沙总站:,crontab定时职分安插

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

一、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

 

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

二、CRONTAB在线手册

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

[oracle@localhost ~]$ man crontab | more

6165金沙总站 16165金沙总站 2

 1 CRONTAB(1)                                                          CRONTAB(1)
 2 
 3 
 4 
 5 NAME
 6        crontab - maintain crontab files for individual users (ISC Cron V4.1)
 7 
 8 SYNOPSIS
 9        crontab [-u user] file
10        crontab [-u user] [-l | -r | -e] [-i] [-s]
11 
12 DESCRIPTION
13        Crontab  is  the  program used to install, deinstall or list the tables
14        used to drive the cron(8) daemon in ISC Cron.  Each user can have their
15        own  crontab,  and though these are files in /var/spool/ , they are not
16        intended to be edited directly. For SELinux in mls  mode  can  be  even
17        more crontabs - for each range. For more see selinux(8).
18 
19        If the cron.allow file exists, then you must be listed therein in order
20        to be allowed to use this command.  If the  cron.allow  file  does  not
21        exist but the cron.deny file does exist, then you must not be listed in
22        the cron.deny file in order to use this command.  If neither  of  these
23        files  exists, only the super user will be allowed to use this command.
24 
25 
26 OPTIONS
27        -u     It specifies the name  of  the  user  whose  crontab  is  to  be
28               tweaked.   If  this option is not given, crontab examines "your"
29               crontab, i.e., the crontab of the person executing the  command.
30               Note  that su(8) can confuse crontab and that if you are running
31               inside of su(8) you should always use the -u option for safety’s
32               sake.   The  first form of this command is used to install a new
33               crontab from some named file or standard input  if  the  pseudo-
34               filename "-" is given.
35 
36        -l     The current crontab will be displayed on standard output.
37 
38        -r     The current crontab will be removed.
39 
40        -e     This option is used to edit the current crontab using the editor
41               specified by the VISUAL or EDITOR environment variables.   After
42               you exit from the editor, the modified crontab will be installed
43               automatically.
44 
45        -i     This option modifies the -r option to  prompt  the  user  for  a
46               ’y/Y’ response before actually removing the crontab.
47 
48        -s     It will append the current SELinux security context string as an
49               MLS_LEVEL setting to the crontab file before editing /  replace-
50               ment  occurs - see the documentation of MLS_LEVEL in crontab(5).
51 
52 SEE ALSO
53        crontab(5), cron(8)
54 
55 FILES
56        /etc/cron.allow
57        /etc/cron.deny
58 
59 STANDARDS
60        The crontab command conforms to IEEE Std1003.2-1992 (‘‘POSIX’’).   This
61        new  command  syntax  differs  from previous versions of Vixie Cron, as
62        well as from the classic SVR3 syntax.
63 
64 DIAGNOSTICS
65        A fairly informative usage message appears if you run  it  with  a  bad
66        command line.
67 
68 AUTHOR
69        Paul Vixie <vixie@isc.org>
70 
71 
72 
73 4th Berkeley Distribution       16 Januar 2007                      CRONTAB(1)

View Code

 

 

3:cron.deny 与 cron.allow文件

四、参考资料

 

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

三、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: 尽量所有的文件都采用完全路径方式,避免使用相对路径。

第三列 日 : 1——31

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

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

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

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

MAILTO=root

total 12

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

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

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

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

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

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

CRONTAB语法及应用

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

HOME=/

cron.monthly:

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

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

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

第四列 月 : 1——12

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

# run-parts

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

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

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

oracle root

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

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

total 0

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

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

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

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

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

[root@localhost cron]# ls

#! /bin/sh

CRONTAB在线手册

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

no crontab for root

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

注意事项:

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

以上这篇Linux
crontab定时任务配置方法(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

4:

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

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

[root@localhost ~]# crontab -r

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

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

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

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

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

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

cron.d:

2表示错误输出.

cron.hourly:

[root@localhost ~]# crontab -l

date >> test.txt

第六列 要运行的命令

cron.weekly:

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

[oracle@localhost etc]$ more cron.deny

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

[oracle@localhost ~]$ crontab -e

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

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

第一列 分钟: 1——59

total 8

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

……………………………………….

0表示键盘输入

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

[oracle@localhost ~]$ crontab -l

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

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

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

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

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

total 60

1表示标准输出

[oracle@localhost ~]$ man crontab | more

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

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

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

然后添加作业

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

total 16

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)

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

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

cron.daily:

CRONTAB概念/介绍

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

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

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

您可能感兴趣的文章:

  • CentOS下采用Crontab实现PHP脚本定时任务
  • centos
    设置定时任务执行指定脚本的方法
  • linux使用crontab实现PHP执行计划定时任务
  • Linux使用定时任务每周定时清理45天以前日志
  • Linux下Python脚本自启动与定时任务详解
  • CentOS7设置定时任务

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

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

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

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

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

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

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

echo “hello, everybody, now is ” `date`

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

SHELL=/bin/bash

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