RedhatlinuxAS3下定时执行任务

二、cron调度进程

cron是系统主要的调度进程linux系统安装教程,可以在无需人工干预的情况下运行作业。有一个称作

crontab的命令容许用户递交、编辑或删掉相应的作业。每一个用户都可以有一个crontab文件

来保存调度信息。可以使用它运行任意一个shell脚本或某个命令,每小时运行一次,或一周

三次,这完全取决于你。每一个用户都可以有自己的crontab文件,但在一个较大的系统中,

系统管理员通常会严禁那些文件linux常用命令,而只在整个系统保留一个这样的文件。系统管理员是通过

cron.deny和cron.allow这两个文件来严禁或容许用户拥有自己的crontab文件。

3.1.1crontab的域

为了才能在特定的时间运行作业,须要了解crontab文件每位条目中各个域的意义和格式。

下边就是这种域:

第1列分钟1~59

第2列小时1~23(0表示子夜)

第3蒙斯1~31

第4列月1~12

第5列礼拜0~6(0表示礼拜天)

第6列要运行的命令

Redhat Linux AS 3 cron调度进程设置_cron tab文件编辑方法_linux 定时执行sh

crontab的范例格式:

下边是crontab的格式:

分时日月礼拜要运行的命令

其中表示空格。

Crontab文件的一个条目是从右边读起的,第一列是分,最后一列是要运行的命令,它位

于礼拜的旁边。

在这种域中,可以用横杠-来表示一个时间范围,比如你希望礼拜一至礼拜五运行某个作

业,这么可以在礼拜域使用1-5来表示。还可以在这种域中使用冒号“,”,比如你希望礼拜一

和礼拜四运行某个作业,只须要使用1,4来表示。可以用星号*来表示连续的时间段。假如你

对某个表示时间的域没有非常的限定,也应当在该域填入*。该文件的每一个条目必须富含5

个时间域,并且每位域之间要用空格分隔。该文件中所有的注释行要在行首用#来表示。

crontab条目举例

这儿有crontab文件条目的一些事例:

3021***/apps/bin/cleanup.sh

里面的反例表示晚上的21:30运行/apps/bin目录下的cleanup.sh。

4541,10,22**/apps/bin/backup.sh

linux 定时执行sh_Redhat Linux AS 3 cron调度进程设置_cron tab文件编辑方法

里面的反例表示每月1、10、22日的4:45运行/apps/bin目录下的backup.sh。

101**6,0/bin/find-name”core”-execrm{};

里面的反例表示每周六、周日的1:10运行一个find命令。

0,3018-23***/apps/bin/dbcheck.sh

里面的反例表示在每晚18:00至23:00之间每隔30分钟运行/apps/bin目录下的dbcheck.sh。

023**6/apps/bin/qtrend.sh

里面的反例表示每礼拜六的11:00pm运行/apps/bin目录下的qtrend.sh。

你可能早已注意到里面的事例中,每位命令都给出了绝对路径。当使用crontab运行shell

脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。记住,既然是用户向cron

递交了那些作业,就要向cron提供所需的全部环境。不要假设cron晓得所须要的特殊环境,它

似乎并不晓得。所以你要保证在shell脚本中提供所有必要的路径和环境变量,不仅一些手动

设置的全局变量。

命令方式:

crontab命令的通常方式为:

Crontab-e-l-r

其中:

-u用户名。

Redhat Linux AS 3 cron调度进程设置_cron tab文件编辑方法_linux 定时执行sh

-e编辑crontab文件。

-l列举crontab文件中的内容。

-r删掉crontab文件。

假如使用自己的名子登陆,就不用使用-u选项,由于在执行crontab命令时,该命令才能

晓得当前的用户

建一个新的crontab文件

在考虑向cron进程递交一个crontab文件之前,首先要做的一件事情就是设置环境变量

EDITOR。cron进程按照它来确定使用那个编辑器编辑crontab文件。99%的UNIX和LINUX用

户都使用vi,假如你也是这样,这么你就编辑$HOME目录下的.profile文件,在其中加入这样

一行:

EDITOR=vi;exportEDITOR

之后保存并退出。

不妨创建一个名为cron的文件,其中是用户名linux 定时执行sh,比如,jamescron。在该文件中加入如下的内容。

#。。。。这儿是解释的话

0linux 定时执行sh,15,30,4518-06***/bin/echo'time'>/dev/console

linux 定时执行sh_cron tab文件编辑方法_Redhat Linux AS 3 cron调度进程设置

保存并退出。确信后面5个域用空格分隔。

在前面的事例中,系统将每隔15分钟向控制台输出一次当前时间。若果系统崩溃或挂起,

从最后所显示的时间就可以一眼看出系统是哪些时间停止工作的。在有些系统中,用tty1来表

示控制台,可以按照实际情况对里面的事例进行相应的更改。

为了递交你刚才创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:

$crontabjamescron

如今该文件早已递交给cron进程,它将每隔15分钟运行一次。

同时,新创建文件的一个副本早已被置于/var/spool/cron目录中,文件名就是用户名(即,

james)。

列举crontab文件:

为了列举crontab文件,可以用:

你将会看见和前面类似的内容。可以使用这些方式在$HOME目录中对crontab文件做一备

份:

$crontab-l>$HOME/mycron

这样,一旦不留神删掉了crontab文件,可以用上一节所述说的方式迅速恢复。

编辑crontab文件:

Redhat Linux AS 3 cron调度进程设置_linux 定时执行sh_cron tab文件编辑方法

假如希望添加、删除或编辑crontab文件中的条目,而EDITOR环境变量又设置为vi,这么

就可以用vi来编辑crontab文件,相应的命令为:

$crontab-e

可以像使用vi编辑其他任何文件那样更改crontab文件并退出。假如更改了个别条目或添加了新的条目,这么在保存该文件时,cron会对其进行必要的完整性检测。倘若其中的某个域出现了超出容许范围的值,它会提示你。

保存并退出。最好在crontab文件的每一个条目之上加入一条注释,这样就可以晓得

它的功能、运行时间,更为重要的是,晓得这是哪位用户的作业。

可以使用上面讲过的crontab-l命令列举它的全部信息

为了删掉crontab文件,可以用:

$crontab-r

三,可以借助重定向命令来输出运行结果

>,>>

四、具体实例

sh脚本文件:test.sh

#!/bin/sh

su-oracle

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复