ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux Crontab定时任务命令

Linux Crontab定时任务命令

原创 Linux操作系统 作者:keeptrying 时间:2013-01-05 15:59:52 0 删除 编辑

一、Crontab介绍

 

crontab命令的功能是在一定的时间间隔调度一些命令的执行。

 

1、/etc/crontab文件

在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。

如:

[root@localhost ~]# cat /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、/etc/cron.deny和/etc/cron.allow文件

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

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

 

如果两个文件同时存在,那么/etc/cron.allow优先。

如果两个文件都不存在,那么只有超级用户可以安排作业。

 

每个用户都会生成一个自己的crontab文件,这些文件在/var/spool/cron目录下:

如:

[root@dave ~]# cd /var/spool/cron

[root@dave cron]# ls

oracle  root

 

我们直接查看这个文件,里面的内容和对应用户显示的crontab -l 一致。

[root@dave cron]# cat oracle

00 6 * * * /u02/scripts/del_st_archive.sh >/u02/scripts/del_st_arch.log 2>&1

[root@dave cron]# cat root

0 12 * * * /root/bin/sync-clock.sh

 

 

二、Crontab使用说明

 

1、Crontab语法

 

usage:  crontab [-u user] file

        crontab [-u user] [ -e | -l | -r ]

                (default operation is replace, per 1003.2)

        -e      (edit user's crontab)

        -l      (list user's crontab)

        -r      (delete user's crontab)

        -i      (prompt before deleting user's crontab)

        -s      (selinux context)

其中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。

 

2、Crontab格式说明

可以用crontab -e 添加要执行的命令。 命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。

 

添加的命令必须以如下格式:

* * * * * /command path

 

前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。各个字段之间用spaces和tabs分割。

前五个字段分别表示:

分钟:0-59

小时:1-23

日期:1-31

月份:1-12

星期:0-6(0表示周日)

还可以用一些特殊符号:

*:表示任何时刻

,:表示分割

-:表示一个段,如1-5,表示1到5点

/n:表示每隔n的单位执行一次,如*/1,就表示每隔1个小时执行一次命令。也可以写成1-23/1.

 

示例:

43 21 * * *          21:43执行

15 05 * * *           05:15执行

0 17 * * *            17:00执行

0 17 * * 1            每周一的17:00执行

0,10 17 * * 0,2,3     每周日,周二,周三的17:00和17:10执行

0-10 17 1 * *        每月1日从17:00到17:10每隔1分钟执行

0 0 1,15 * 1        每月1日和15日和周一的0:00执行

42 4 1 * *          每月1日的4:42分执行

0 21 * * 1-6        周一到周六21:00执行

0,10,20,30,40,50 * * * *    每隔10分钟执行

*/10 * * * *                每隔10分钟执行

* 1 * * *           从1:00到1:59每隔1分钟执行

0 1 * * *           1:00执行

0 */1 * * *         每时0分,每隔1小时执行

0 * * * *           每时0分,每隔1小时执行

2 8-20/3 * * *      8:02,11:02,14:02,17:02,20:02执行

30 5 1,15 * *       1日和15日的5:30执行

 

3、&后台执行命令

当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。

如:

30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh &

 

在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。

不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:

如:

command >out.file 2>&1 &

在这个例子中,2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。

 

4、2>&1含义

 

先看一个例子:

0 2 * * * /u01/test.sh >/dev/null 2>&1 &

这句话的意思就是在后台执行这条命令,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null 文件,也就是清空。

 

在这里有几个数字的意思:

      0表示键盘输入

      1表示标准输出

      2表示错误输出

我们也可以这样写:

0 2 * * * /u01/test.sh  >/u01/out.file &  --这里没写,默认是1

0 2 * * * /u01/test.sh  1>/u01/out.file &

0 2 * * * /u01/test.sh  2>/u01/out.file &

0 2 * * * /u01/test.sh  2>/u01/out.file  2>&1 &

将test.sh命令输出重定向到out.file,即输出内容不打印到屏幕上,而是输出到out.file文件中。

 

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

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

& :后台执行

 

测试:

ls 2>1 :不会报没有2文件的错误,但会输出一个空的文件1;

ls xxx 2>1 :没有xxx这个文件的错误输出到了1中;

ls xxx 2>&1 :不会生成1这个文件了,不过错误跑到标准输出了;

ls xxx >out.txt 2>&1 == ls xxx 1>out.txt 2>&1:因为重定向符号>默认是1,这句话就把错误输出和标准输出都传到out.txt文件中。

 

5、2>&1写在后面的原因

格式:command >file 2>&1  == command 1>file 2>&1

 

首先是command>file将标准输出重定向到file中,2>&1是标准错误拷贝了标准输出,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。

如果改成:command 2>&1 >file

2>&1标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file后输出才被重定向到file,但标准错误仍然保持在终端。

 

 

 

 

 

 

 

 

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25744374/viewspace-752151/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-04-25

  • 博文量
    130
  • 访问量
    1031754