目录

概念/介绍

CRONTAB语法及应用

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

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

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

4. 任务详解

5. 注意:

概念/介绍

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

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

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

[root@localhost ~]# 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

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. 任务详解

  • test.sh执行文件举例:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/u01/rfc
  • 定时任务设置举例:
#>输出内容不打印到屏幕上,而是输出到*.txt文件中
#追加而不是覆盖,可以用 >>代替>
*/5 * * * * /u01/rfc/test.sh > /u01/rfc/logs/test.txt 2>&1
  • 解析crontab任务
a. 定时任务时间含义解释
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
b.每个条目中各个域的意义和格式:
第一列 分钟: 0——59
第二列 小时: 0——23
第三列 日 : 1——31
第四列 月 : 1——12
第五列 星期: 星期0——6(0表示周天,1表示周一。。。)
第六列 要运行的任务命令(0表示键盘输入;1表示标准输出;2表示错误输出)默认值为1
前面五列有四种写法: 
1. * 表示第几分钟(小时/日/月/星期)执行一次 ;
2. */n 表示每n分钟(小时/日/月/星期)执行一次;
3. T1-T2 表示从T1到T2分钟(小时/日/月/星期)要执行任务;
4. a,b,c 表示a,b,c分钟(小时/日/月/星期)分别执行一次; 
第六列:2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件test.txt。&1 表示的是文件描述1,表示标准输出,如果这里少了&就成了数字1,就表示重定向到文件1。

5. 注意:

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

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