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列要运行的命令
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
里面的反例表示每月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用户名。
-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
保存并退出。确信后面5个域用空格分隔。
在前面的事例中,系统将每隔15分钟向控制台输出一次当前时间。若果系统崩溃或挂起,
从最后所显示的时间就可以一眼看出系统是哪些时间停止工作的。在有些系统中,用tty1来表
示控制台,可以按照实际情况对里面的事例进行相应的更改。
为了递交你刚才创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:
$crontabjamescron
如今该文件早已递交给cron进程,它将每隔15分钟运行一次。
同时,新创建文件的一个副本早已被置于/var/spool/cron目录中,文件名就是用户名(即,
james)。
列举crontab文件:
为了列举crontab文件,可以用:
你将会看见和前面类似的内容。可以使用这些方式在$HOME目录中对crontab文件做一备
份:
$crontab-l>$HOME/mycron
这样,一旦不留神删掉了crontab文件,可以用上一节所述说的方式迅速恢复。
编辑crontab文件:
假如希望添加、删除或编辑crontab文件中的条目,而EDITOR环境变量又设置为vi,这么
就可以用vi来编辑crontab文件,相应的命令为:
$crontab-e
可以像使用vi编辑其他任何文件那样更改crontab文件并退出。假如更改了个别条目或添加了新的条目,这么在保存该文件时,cron会对其进行必要的完整性检测。倘若其中的某个域出现了超出容许范围的值,它会提示你。
保存并退出。最好在crontab文件的每一个条目之上加入一条注释,这样就可以晓得
它的功能、运行时间,更为重要的是,晓得这是哪位用户的作业。
可以使用上面讲过的crontab-l命令列举它的全部信息
为了删掉crontab文件,可以用:
$crontab-r
三,可以借助重定向命令来输出运行结果
>,>>
四、具体实例
sh脚本文件:test.sh
#!/bin/sh
su-oracle