Linux定时任务-Crontab

来源:互联网 发布:网络摄像头怎样安装 编辑:程序博客网 时间:2024/06/03 22:54

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脚本如下:

vi printDate.sh:#! /bin/shecho "hello,everybody,now is " `date`

保存退出

crontab -e* * * * * /export/home/fanjm/printDate.sh >> /export/home/fanjm/printDatelog.txt 2>&1

保存退出
more printDatelog.txt结果:

hello,everybody,now is  Mon Jun 5 14:04:01 CST 2017hello,everybody,now is  Mon Jun 5 14:05:01 CST 2017hello,everybody,now is  Mon Jun 5 14:06:01 CST 2017hello,everybody,now is  Mon Jun 5 14:07:01 CST 2017hello,everybody,now is  Mon Jun 5 14:08:01 CST 2017hello,everybody,now is  Mon Jun 5 14:09:01 CST 2017hello,everybody,now is  Mon Jun 5 14:10:01 CST 2017hello,everybody,now is  Mon Jun 5 14:11:02 CST 2017hello,everybody,now is  Mon Jun 5 14:12:01 CST 2017hello,everybody,now is  Mon Jun 5 14:13:01 CST 2017hello,everybody,now is  Mon Jun 5 14:14:01 CST 2017hello,everybody,now is  Mon Jun 5 14:15:01 CST 2017hello,everybody,now is  Mon Jun 5 14:16:01 CST 2017hello,everybody,now is  Mon Jun 5 14:17:01 CST 2017hello,everybody,now is  Mon Jun 5 14:18:01 CST 2017hello,everybody,now is  Mon Jun 5 14:19:01 CST 2017hello,everybody,now is  Mon Jun 5 14:20:01 CST 2017

**注:2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件log.txt。
配置定时任务时,需要注意两个问题:
1: 在SHELL中设置了必要的环境变量;例如一个shell脚本手工执行OK,但是配置成后台作业执行时,获取不到ORACLE的环境变量,这是因为crontab环境变量问题,Crontab的环境默认情况下并不包含系统中当前用户的环境。所以,你需要在shell脚本中添加必要的环境变量的设置
2: 尽量所有的文件都采用完全路径方式,避免使用相对路径。**

原创粉丝点击