linux下使用crontab命令被用来提交和管理用户的需要周期性执行的任务,示例如下:
crontab -e 编辑周期任务 30 21 * * * /etc/init.d/smb restart 每晚的21:30重启smb crontab命令说明:
crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 语法
crontab(选项)(参数)
选项
-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。
参数
crontab文件:指定包含待执行任务的crontab文件。 知识扩展
Linux下的任务调度分为两类:系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。 crontab文件的含义:
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command 顺序:分 时 日 月 周
其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符: 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
在oracle 中可以利用dbms_job包定时执行pl/sql、sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 本文讲述crontab具体用法,以供备忘. 在oracle 中可以利用dbms_job包定时执行pl/sql、sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 利用crontab来定时执行任务大致有如下三步: 1、编写shell脚本 2、利用crontab加入到定时任务队列 3、查看作业完成情况 一、如何建立shell脚本 Linux下有很多不同的shell,但我们通常使用bash(bourne again shell)进行编程,因为bash是免费的并且很容易使用 程序必须以下面的行开始(必须方在文件的第一行): #! /bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编辑好脚本时,要想执行脚本,必须使脚本可以执行 下面的命令,可以使脚本可以执行 chmod +x filename 然后可以输入./filename来执行脚本。 注:在shell编程时,#符号表示注释,只该行结束为止。在编写程序时,最好使用注释。 变量 shell下所有变量都以字符串表示,变量不需要声明,直接使用。直接对变量进行赋值 A="hello world" 取出变量用$符号,如: #! /bin/sh A="hello world" echo "A is:" echo $A 执行该脚本输出结果如下: A is : hello world shell 命令和流程控制 1)unix命令 在shell中可以使用任意的unix命令,但这里介绍一些更常用的unix命令 echo ''this is a example" :打印输出到屏幕 ls:列出文件列表 cp sourcefile destinationfile :拷贝文件 2)概念:管道,重定向和backtick 这些不是系统命令,但他们经常使用,很重要的 管道 | 将一个命令的输出作为另外一个命令的输入 grep -qa compat | more 重定向:将命令的结果输出到文件,而不是标准输出(屏幕) 〉写入文件并覆盖旧文件 〉〉输出追加到文件的尾部,保留旧文件。 3)流程控制 if ... ; then ... else if ...;then ... else ... fi 通常情况下,可以通过测试命令来对条件进行测试,比如可以比较字符串,判断文件是否存在及是否有执行权限等等 通常用“ [ ] “来表示条件测试,注意这里空格很重要,要确保方括号空格 [ -f "somefile" ] :判断是否是一个文件 实例 一般编程步骤 任何优秀的脚本都应该有帮助和输入参数,并且写一个伪脚本framework.sh,该脚本包含了大多数脚本都需要的框架结构。 是个非常不错的注意。这时候,我们编写脚本时只需要执行cp命令即可 cp framework.sh myscript 然后插入自己需要的函数就可以了 调试 最简单的调试命令当然是使用echo命令。您可以使用echo在任何怀疑出错的地方打印任何变量值。这也是绝大多数的shell程序员要花费80% 的时间来调试程序的原因。Shell程序的好处在于不需要重新编译,插入一个echo命令也不需要多少时间。 shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误,您可以这样来进行调试: sh -x strangescript 这将执行该脚本并显示所有变量的值。 shell还有一个不需要执行脚本只是检查语法的模式。可以这样使用: sh -n your_script 这将返回所有语法错误。 Redhat linux AS 3 下定时执行任务 二、cron调度进程 c r o n是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做 crontab的范例格式: crontab条目举例 你可能已经注意到上面的例子中,每个命令都给出了绝对路径。当使用c r o n t a b运行s h e l l 命令形式: 建一个新的crontab文件 在考虑向c r o n进程提交一个c r o n t a b文件之前,首先要做的一件事情就是设置环境变量 保存并退出。确信前面5个域用空格分隔。 列出crontab文件: 为了列出c r o n t a b文件,可以用: 编辑crontab文件: 如果希望添加、删除或编辑c r o n t a b文件中的条目,而E D I TO R环境变量又设置为v i,那么 为了删除c r o n t a b文件,可以用: 三,可以利用重定向命令来输出运行结果 > ,>> 四、具体实例 sh脚本文件:test.sh #! /bin/sh su - oracle << EOF sqlplus test/test@test @"test.sql" sql脚本文件:test.sql insert into test_tb values (sysdate); crontab文件: 0,15,30,45 * * * * /apps/bin/test.sh |