`
terry0501
  • 浏览: 314704 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 

CRONTAB在线手册

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

[oracle@localhost ~]$ man crontab | more

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

分享到:
评论

相关推荐

    cron和crontab概念详解

    ### cron与crontab概念详解 #### 一、cron简介 cron是Linux系统中的一个守护进程,用于在特定的时间间隔内自动执行预定的任务或者命令。它可以帮助用户在无需人工干预的情况下自动化一系列工作流程,比如定时备份...

    Linux crontab定时任务配置方法(详解)

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

    linux C7 crontab离线安装包

    首先,我们来了解一下Crontab的基本概念和工作原理。Crontab是一个文本文件,包含了一系列按照特定格式编写的定时任务。每个用户都可以拥有自己的crontab文件,同时系统还有一份全局的crontab用于管理系统的定时任务...

    crontab自动备份

    在深入解析如何使用`crontab`实现自动备份之前,我们首先简要了解下`crontab`的基本概念及其工作原理。 `crontab`是Unix/Linux系统中的一个用于计划任务执行的工具。用户可以通过`crontab`来定义一系列定时执行的...

    crontab与shell脚本

    1. **Crontab介绍**: - `crontab`是Linux系统中的一个守护进程(daemon),用于执行计划任务。 - 用户可以使用`crontab`命令来创建、编辑或删除计划任务。 2. **Crontab配置文件**: - 每个用户都有自己的`...

    Crontab命令.doc

    #### 基础概念与语法 Crontab的基本语法为: ```bash crontab [-u user] { -e | -l | -r } ``` 其中: - `-u user`:用于指定对哪个用户进行操作,需要具有足够的权限(通常是root用户)才能修改其他用户的定时...

    crontab的使用

    ### Crontab的使用详解 ...通过本文,我们详细介绍了Crontab的基本概念、工作原理、文件管理以及如何配置和使用Crontab任务。希望这些信息能够帮助你更好地理解和使用Crontab,从而提高你的Linux系统的自动化水平。

    shell编程-awk,sed,crontab

    下面将详细介绍这三个工具及其在Linux环境中的应用。 1. **awk**: - **基本概念**:awk是一种强大的文本分析工具,用于处理和打印数据。它基于模式扫描和处理语言,可以从文件或标准输入中读取数据,按照指定的...

    unix Crontab实例.

    #### Crontab的基本概念与作用 Crontab(cron table)是一种定时任务调度工具,它允许用户在固定时间周期性地执行命令或脚本。通过编辑用户的crontab文件,可以设置各种复杂的定时任务。Crontab服务通常由cron守护...

    unix C语言crontab、makefile资料

    这两个概念是Unix/Linux开发环境中效率和自动化的重要组成部分。 **1. crontab** crontab是一个Unix系统中的任务调度命令,用于设置周期性被执行的任务。它允许用户按照时间间隔定义任务,比如定时运行脚本、备份...

    crontab 用法详情 定时任务 非常详细

    本文将详细介绍 `crontab` 的用法、语法以及相关示例。 ### `crontab` 的基本概念 `crontab` 代表 "cron table",它是通过一个特殊格式的文本文件来定义定时任务的。每个用户都有自己的 `crontab` 文件,存储在 `/...

    linux crontab用法

    本文将深入解析Crontab的使用方法,涵盖其基本概念、语法结构以及高级功能。 #### 基本概念与用途 Crontab命令主要用于管理由cron守护进程执行的任务列表。每个用户可以拥有自己的crontab文件,用于存储需要定期...

    linux采用crontab定时跑任务.docx

    通过理解这些基本概念,你可以有效地利用crontab设置自动化任务,从而提高工作效率并确保系统维护任务的按时执行。无论是在日常的系统管理还是在开发自动化流程中,掌握crontab的使用都是十分重要的。

    易语言 Crontab 定时任务执行模块 v1.2 支持单位秒 也可做计时器源码

    对于易语言初学者,理解这个模块可能需要一定的时间,因为它涉及到时间和计划任务的高级概念。但一旦掌握,就能极大地扩展你的程序功能,使其能够自动执行各种定时操作。为了更深入地学习,你可以阅读模块提供的文档...

    crontab定时器(包括执行shell)

    crontab 的基本概念: * crontab 文件:是存储计划任务的文件,通常位于 /var/spool/cron 目录下。 * crontab 命令:用于编辑和管理计划任务的命令。 * cron daemon:是 système 任务调度器,负责执行计划任务。 ...

    关于crontab的使用详解

    1. **基本概念** - **使用权限**:所有用户都可以使用`crontab`,但修改其他用户的任务需要具有相应权限,如root。 - **使用方式**:`crontab -e` 用于编辑当前用户的定时任务;`crontab -r` 删除当前用户的定时...

    Linux中crontab输出重定向不生效问题的解决方法

    首先,我们需要理解Linux的输出重定向概念。在Linux中,`1`代表标准输出(stdout),默认输出到屏幕;`2`代表标准错误输出(stderr),同样默认输出到屏幕。重定向操作通常使用`&gt;`和`符号来改变输出或输入的目标。...

    利用Linux中的crontab实现分布式项目定时任务功能

    通过本文的学习,我们可以了解到 crond 服务和 crontab 命令的基本概念及其使用方法。此外,还介绍了如何在 Java 应用中实现定时任务,这为开发分布式项目的定时任务功能提供了有力的支持。希望本文能对你有所帮助。

    Centos 7下利用crontab定时执行任务详解

    下面我们将详细探讨 `crontab` 的基本概念、如何使用以及一些实例。 ### 前言 `cron` 服务是Linux内建的服务,但并不默认在开机时启动。我们可以通过以下命令手动控制 `cron` 服务: 1. 启动服务:`/sbin/service...

Global site tag (gtag.js) - Google Analytics