求定时执行一条指令的shell脚本学习指南:

Linux crontab定时执行任务 命令格式与详细例子
Linux crontab定时执行任务 命令格式与详细例子,大家可以参考下。
基本格式 : *  *  *  *  *  command 分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 crontab文件的一些例子: 30 21 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每晚的21:30重启apache。 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每月1、10、22日的4 : 45重启apache。 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每周六、周日的1 : 10重启apache。 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每星期六的11 : 00 pm重启apache。 * */1 * * * /usr/local/etc/rc.d/lighttpd restart 每一小时重启apache * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 晚上11点到早上7点之间,每隔一小时重启apache 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 每月的4号与每周一到周三的11点重启apache 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 一月一号的4点重启apache 名称 : crontab 使用权限 : 所有使用者 使用方式 : crontab file [-u user]-用指定的文件替代目前的crontab。 crontab-[-u user]-用标准输入替代目前的crontab. crontab-1[user]-列出用户目前的crontab. crontab-e[user]-编辑用户目前的crontab. crontab-d[user]-删除用户目前的crontab. crontab-c dir- 指定crontab的目录。 crontab文件的格式:M H D m d cmd. M: 分钟(0-59)。 H:小时(0-23)。 D:天(1-31)。 m: 月(1-12)。 d: 一星期内的天(0~6,0为星期天)。 cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量 说明 : crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设 定自己的时程表。 参数 : crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数 来指定使用那个文字编辑器(比如说 setenv VISUAL joe) crontab -r : 删除目前的时程表 crontab -l : 列出目前的时程表 crontab file [-u user]-用指定的文件替代目前的crontab。 时程表的格式如下 : f1 f2 f3 f4 f5 program 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执 行的程序。 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推 使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。 例子 : #每天早上7点执行一次 /bin/ls : 0 7 * * * /bin/ls 在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup : 0 6-12/3 * 12 * /usr/bin/backup 周一到周五每天下午 5:00 寄一封信给 alex@domain.name : 0 17 * * 1-5 mail -s &hi& alex@domain.name & /tmp/maildata 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo &haha& 20 0-23/2 * * * echo &haha& 注意 : 当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之 后加上 & /dev/null 2&&1 即可 例子2 : #每天早上6点10分 10 6 * * * date #每两个小时 0 */2 * * * date #晚上11点到早上8点之间每两个小时,早上8点 0 23-7/2,8 * * * date #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * mon-wed date #1月份日早上4点 0 4 1 jan * date 范例 $crontab -l 列出用户目前的crontab.网页设计教程与开发
提供各种常见网页效果
提供各种各样的设计教程
装扮QQ,让QQ变得更酷
设计参考,提高自升水平
学习服务器和操作系统
提供各种素材和工具
收藏学习资料
您现在的位置:&&>>&&>>&&>>&正文
shell脚本中一些特殊符号(2)
>&&& 6、$((...))语法:对括号内的表达式求值
&&& #!/bin/sh
&&& hile [ "$x" -ne 10 ];do
&&& echo $x
&&& x=$(($x+1))
&&& exit 0
&&& 7、shell中几种特殊的参数变量的引用
&&& {GetProperty(Content)}、$2、$3……${10}、${11}、${12}…… :表示脚本传入的的各个参数,注意当需表示两位数以后的参数时数字要用花括号括起。
&&& $@ 列出所有的参数,各参数用空格隔开$*: 列出所有的参数,各参数用环境变量IFS的第一个字符隔开8、命令列表:
&&& AND列表statement1 && statement2 && statement3 &&…:只有在前面所有的命令都执行成功的情况下才执行后一条命令
&&& OR列表 statement1 || statement2 || statement3 || …:允许执行一系列命令直到有一条命令成功为止,其后所有命令将不再被执行eg:#!/bin/sh
&&& touch file_one
&&& rm -f file_two
&&& if [ -f file_one ] && echo "hello" && [ -f file_two ] && echo " there"
&&& echo "in if"
&&& echo "in else"
&&& exit 0
&&& 上例的输出为:
&&& in else
&&& 关于AND列表与OR列表,在逻辑判断中很使用,下面就举一个其最常用的例子:
&&& [ condition ] && command for true || command for false:
&&& 当条件为真时,执行commandfor true ,当条件为假时,执行command for false
&&& 9、: 冒号:内建空指令,返回值为0
&&& eg: $ :
&&& $ echo $?
&&& while: (该语句结构可实现一个无限循环)
&&& 10、; 分号: 在 shell 中,担任"连续指令"功能的符号就是"分号" eg:cd ~/ cp ~/.* startup/.
&&& 11、# 井号:表示符号后面的是注解文字,不会被执行;* 匹配文件名中的任何字符,包括字符串;? 匹配文件名中的任何单个字符。
&&& ~代表使用者的home目录
&&& 12、\ 倒斜线:放在指令前,有取消 aliases(别名) 的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行(使得回车符无效,只起换行作用)
&&& 14、! 感叹号:通常它代表反逻辑的作用,譬如条件侦测中,用 != 来代表"不等于"
&&& 15、**次方运算:两个星号在运算时代表"次方"的意思
&&& eg:let "sus=2**3"
&&& echo "sus = $sus"
&&& $ sus = 8 -
转载请注明:破洛洛(谢谢合作)
上一篇文章: 下一篇文章:
网友评论:相关文章推荐:
hell脚本中直接执行没有问题放到crontab中确不能执行的问题
crontab的格式是到分的级别
格式如下:
分 时 日 月 周
###个人觉得这个是比较完美的
[test@B02 tmp]$ crontab -l
###每到20秒执行一次,要写3个,20秒一次,40秒一次,1分钟一次。三个综合下来就是每20秒执行一次
* * * * * sleep 20&&bash /home/test/mosql.sh
* * * * * sleep 40&&bash /home/test/mosql.sh
* * * * * bash /home/test/mos...
阅读(180) 回复(0)
其他文章推荐
问题描述:crontab中启动的shell脚本不能正常运行,但是使用手动执行没有问题,在$home/.profile中设定了脚本所需要的环境变量。
cron命令的默认shell是/bin/sh,如果要在cron启动的脚本中使用ksh,就必须在脚本中的第一行添加“!/bin/sh”的声明。
如果cron进程启动的shell脚本设置了用户登录时的环境变量,就必须在cron启动的shell脚本中添加下面的内容,才能够在启动的脚本中使用$home/.profile文件中的环境变量。
在shell中...
阅读(150) 回复(0)
使用top -n1 | grep Cpu 在crontab中是不执行的
必须使用 top -b -n1 |grep .... 才可以
阅读(30) 回复(0)
我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现。但这两种方法都不太可靠,不稳定。我们可以借助Linux的crontab工具来稳定可靠地触发PHP执行任务
下面介绍crontab的两种方法。
一、在crontab中使用PHP执行脚本
就像在crontab中调用普通的shell脚本一样(具体crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php如下:
阅读(90) 回复(0)
命令执行操作符
多条命令可以在一行中出现。它们可以从左到右顺序执行。此时,各条命令之间应以分号( ;)隔开.
who | wc - cd /usr/bin
在相邻命令间可存在逻辑关系,即逻辑“与”和逻辑“或”。
逻辑与操作符“&&”;
其一般形式:
命令1 && 命令2
其功能是先执行命令1,如果执行成功,才执行命令2;否则,若命令1执行不成功,则不执行命令2。
阅读(0) 回复(0)
shell脚本中递归的问题比c语言中使用递归应当更谨慎,因为shell脚本中的函数会被shell
当做一个小脚本运行换句话说就是会创建一个进程来运行。
当然递归的时候递归多少次就会创建多少进程
来个事例:
点击(此处)折叠或打开
#!/bin/bash
# using recursion
function factorial {
if [ $1 -eq 1 ]
阅读(30) 回复(0)
1、两个数相加
变量1=`expr $变量2 + $变量3`
变量1=`expr $变量2 + 常数`
2、两个数相减
变量1=`expr $变量2 - $变量3`
变量1=`expr $变量2 - 常数
3、两个数相乘
变量1=`expr $变量2 \* $变量3`
变量1=`expr $变量2 \* 常数`
4、两个数相除
变量1=`expr $变量2 / $变量3`
变量1=`expr $变量2 / 常数`...
阅读(30) 回复(0)
今天在写一个crontab文件时,碰到了文件的s权限。我在root下修改了/usr/bin/crontab.
结果发现crontab -e不能正常工作了。
我有一个crontab作业,已经提交,并且正常执行。
along@along-laptop:~$ crontab -l
*/3 * * * * /bin/echo `date` && /home/along/testlog
我建立crontab作业之前也设置了EDITOR变量。
along@along-laptop:~$ echo $EDITOR
这时我输入crontab -e之后...
阅读(0) 回复(0)
1. 执行执行内建命令
用户在命令行输入命令后,一般情况下Shell会fork并exec该命令,但是Shell的内建命令例外(如何查看该命令是否为内建命令呢?用type命令(手记05),type命令本身也是内建命令)
$ [root@localhost Desktop]# type -a lsls is aliased to `ls --color=tty'ls is /bin/ls[root@localhost Desktop]# type -a typetype is a shell builtin
执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程。以前...
阅读(0) 回复(0)
【转】c语言中调用shell脚本
关于在c语言中调用shell脚本,先是在百度上百度了一下下面的这个应该是说的比较详细的dreamerkxz./blog/static//C程序调用shell脚本共有三种方式:system()、popen()、exec系列函数1)system(shell命令或shell脚本路径);
行过程:system()会调用fork()产生子进程,由子进程来调用/bin/sh-c
string来执行参数string字符串所代表的命令,此命令执行完后随...
Python/Ruby
阅读(0) 回复(0)
linux shell 命令 set -e
set命令的-e参数,linux自带的说明如下:
&Exit immediately if a simple command exits with a non-zero status.&
也就是说,在&set -e&之后出现的代码,一旦出现了返回值非零,整个脚本就会立即退出。
字符串为&null&,即是指字符串长度为零。
字符串不为&null&,即长度不为零
如果exp1和exp2都为真,则exp1 -a exp2返回真.
阅读(0) 回复(0)
盛拓传媒:
北京皓辰网域网络信息技术有限公司. 版权所有
北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证:编号(京)字第1149号
ITPUB推荐文章解答你所有技术难题linux&定时执行shell脚本
今天从网上又看到了一篇文章,将其收藏。
中可以利用dbms_job包定时执行pl/sql、sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成
本文讲述crontab具体用法,以供备忘. 在oracle 中可以利用dbms_job包定时执
中可以利用dbms_job包定时执行pl/sql、sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成
本文讲述crontab具体用法,以供备忘.
中可以利用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:"
执行该脚本输出结果如下:
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
通常情况下,可以通过测试命令来对条件进行测试,比如可以比较字符串,判断文件是否存在及是否有执行权限等等
通常用“ [ ] “来表示条件测试,注意这里空格很重要,要确保方括号空格
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
实例  一般编程步骤
任何优秀的脚本都应该有帮助和输入参数,并且写一个伪脚本framework.sh,该脚本包含了大多数脚本都需要的框架结构。
是个非常不错的注意。这时候,我们编写脚本时只需要执行cp命令即可
cp framework.sh myscript
然后插入自己需要的函数就可以了
最简单的调试命令当然是使用echo命令。您可以使用echo在任何怀疑出错的地方打印任何变量值。这也是绝大多数的shell程序员要花费80%
的时间来调试程序的原因。Shell程序的好处在于不需要重新编译,插入一个echo命令也不需要多少时间。
  shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误,您可以这样来进行调试:
sh -x strangescript
这将执行该脚本并显示所有变量的值。
  shell还有一个不需要执行脚本只是检查语法的模式。可以这样使用:
sh -n your_script
这将返回所有语法错误。
下定时执行任务
二、cron调度进程
c r o n是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做
c r o n t a b的命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个c r o n t a b文件
来保存调度信息。可以使用它运行任意一个s h e l l脚本或某个命令,每小时运行一次,或一周
三次,这完全取决于你。每一个用户都可以有自己的c r o n t a b文件,但在一个较大的系统中,
系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。系统管理员是通过
c r o n . d e n y和c r o n . a l l o w这两个文件来禁止或允许用户拥有自己的c r o n t a
3.1.1 crontab的域
为了能够在特定的时间运行作业,需要了解c r o n t a b文件每个条目中各个域的意义和格式。
下面就是这些域:
第1列分钟1~5 9
第2列小时1~2 3(0表示子夜)
第3列日1~3 1
第4列月1~1 2
第5列星期0~6(0表示星期天)
第6列要运行的命令
crontab的范例格式:
下面是c r o n t a b的格式:
分& &时& &日& &月& &星期& &要运行的命令
其中& &表示空格。
C r o n t a b文件的一个条目是从左边读起的,第一列是分,最后一列是要运行的命令,它位
于星期的后面。
在这些域中,可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作
业,那么可以在星期域使用1 - 5来表示。还可以在这些域中使用逗号“,”,例如你希望星期一
和星期四运行某个作业,只需要使用1 , 4来表示。可以用星号*来表示连续的时间段。如果你
对某个表示时间的域没有特别的限定,也应该在该域填入*。该文件的每一个条目必须含有5
个时间域,而且每个域之间要用空格分隔。该文件中所有的注释行要在行首用#来表示。
crontab条目举例
这里有c r o n t a b文件条目的一些例子:
30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的2 1 : 3 0运行/ a p p s / b i n目录下的c l e a n u p . s
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月1、1 0、2 2日的4 : 4 5运行/ a p p s / b i n目录下的b a c k u p . s
10 1 * * 6,0 /bin/find -name "core" -exec rm {} ;
上面的例子表示每周六、周日的1 : 1 0运行一个f i n d命令。
0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在每天1 8 : 0 0至2 3 : 0 0之间每隔3 0分钟运行/ a p p s / b i n目录下的d b c
h e c k . s h。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的11 : 0 0 p m运行/ a p p s / b i n目录下的q t r e n d . s
你可能已经注意到上面的例子中,每个命令都给出了绝对路径。当使用c r o n t a b运行s h e l l
脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。记住,既然是用户向c r o n
提交了这些作业,就要向c r o n提供所需的全部环境。不要假定c r o n知道所需要的特殊环境,它
其实并不知道。所以你要保证在s h e l l脚本中提供所有必要的路径和环境变量,除了一些自动
设置的全局变量。
命令形式:
c r o n t a b命令的一般形式为:
Crontab [-u user] -e -l -r
-u 用户名。
-e 编辑c r o n t a b文件。
-l 列出c r o n t a b文件中的内容。
-r 删除c r o n t a b文件。
如果使用自己的名字登录,就不用使用- u选项,因为在执行c r o n t a b命令时,该命令能够
知道当前的用户
建一个新的crontab文件
在考虑向c r o n进程提交一个c r o n t a b文件之前,首先要做的一件事情就是设置环境变量
E D I TO R。c r o n进程根据它来确定使用哪个编辑器编辑c r o n t a b文件。9 9 %的U N I X和L
户都使用v i,如果你也是这样,那么你就编辑$ H O M E目录下的. p r o f i l e文件,在其中加入这样
EDITOR= export EDITOR
然后保存并退出。
不妨创建一个名为& u s e r & c r o n的文件,其中& u s e r &是用户名,例如, j
a m e s c r o n。在该文件中加入如下的内容。
#。。。。这里是解释的话
0,15,30,45 18-06 * * * /bin/echo 'time'&/dev/console
保存并退出。确信前面5个域用空格分隔。
在上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,
从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用t t y 1来表
示控制台,可以根据实际情况对上面的例子进行相应的修改。
为了提交你刚刚创建的c r o n t a b文件,可以把这个新创建的文件作为c r o n命令的参数:
$ crontab jamescron
现在该文件已经提交给c r o n进程,它将每隔1 5分钟运行一次。
同时,新创建文件的一个副本已经被放在/ v a r / s p o o l / c r o
n目录中,文件名就是用户名(即,
列出crontab文件:
为了列出c r o n t a b文件,可以用:
你将会看到和上面类似的内容。可以使用这种方法在$ H O M E目录中对c r o n t a b文件做一备
$ crontab -l & $HOME/mycron
这样,一旦不小心误删了c r o n t a b文件,可以用上一节所讲述的方法迅速恢复。
编辑crontab文件:
如果希望添加、删除或编辑c r o n t a b文件中的条目,而E D I TO R环境变量又设置为v i,那么
就可以用v i来编辑c r o n t a b文件,相应的命令为:
$ crontab -e
可以像使用v i编辑其他任何文件那样修改c r o n t a b文件并退出。如果修改了某些条目或添加了新的条目,那么在保存该文件时,
c r o n会对其进行必要的完整性检查。如果其中的某个域出现了超出允许范围的值,它会提示你。
保存并退出。最好在c r o n t a b文件的每一个条目之上加入一条注释,这样就可以知道
它的功能、运行时间,更为重要的是,知道这是哪位用户的作业。
可以使用前面讲过的crontab -l命令列出它的全部信息
为了删除c r o n t a b文件,可以用:
$ crontab -r
三,可以利用重定向命令来输出运行结果
四、具体实例
sh脚本文件:test.sh
#! /bin/sh
su - oracle && EOF
@"test.sql"
sql脚本文件:test.sql
insert into test_tb values (sysdate);
crontab文件:
0,15,30,45 * * * * /apps/bin/test.sh
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。让你的QTP做一个“田螺姑娘”--定时运行你的自动化测试脚本,让它成为BVT的一部分 - 大师兄--绝迹江湖 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园 - Powered by X-Space
心念旧安,夙夜忧叹。
让你的QTP做一个“田螺姑娘”--定时运行你的自动化测试脚本,让它成为BVT的一部分
& 00:07:56
/ 个人分类:
让你的做一个“田螺姑娘”--定时运行你的脚本,让它成为BVT的一部分&本文出自的51Testing软件测试博客,请保留出处及链接:&&& 不少人对启动QTP进行批量脚本测试怀有强烈的好奇心——其实这只是一个很简单的功能。下面给大家提供一些解决思路。[思路一]:&&& 其实网络上现在本身就有不少定时自动运行的软件,只要想办法让这些软件和QTP联系起来,那就解决问题了。[思路二]:&&& 不过songfun在这里要给大家介绍的是自带的一个功能:任务计划(Task Scheduler)。首先简要介绍下任务计划。&&& 任务计划是Windows提供的一个服务。通过创建任务计划的作业,我们可以让任何脚本、程序或文档在任何需要的时候启动运行。任务计划服务默认就是启用的,不过要运行它的话,你必须是Administrators、Backup Operators 或 Server Operators 组的成员。&&& 其实任务计划是作为一个.job文件存储在 \Windows\Tasks 文件夹中的,文件中包含任务的属性和配置信息。我们可以直接在对应的目录中去查看。了解了任务计划之后,我们来了解下如何通过脚本创建一个job,下面举个实例:在C盘下,新建一个文件名叫 run.bat 。然后以notepad方式打开,输入命令“at 16:16 shutdown /r”——命令分成三块:at是计划任务的命令名,中间的数字表示时间,后面是你届时希望运行的命令。OK,想看看效果不妨先把时间改成下一分钟,然后保存下来,双击这个run.bat。呃~~~看到效果了吗& ;P其实这个at命令就是MS-DOS的一个命令,关于它的语法在文章最后会提供给大家。本文出自的51Testing软件测试博客,转载请保留出处及链接:还是回到咱们“田螺姑娘”的话题上,这里是一个例子:先在C盘下创建一个run.bat文件,在文件里输入内容:at 16:09 /interactive cscrīpt C:\rc.vbs当然中间的时间记得改为当前系统时间的下一分钟。再在C盘下创建一个rc.vbs文件,在文件里输入一段代码,见下面部分:''''''''''''''''''''''''''''''''''''''''&&&&&&&& set WshShell = Wscrīpt.CreateObject("Wscrīpt.Shell")&&&&&&&& WshShell.Run "calc"&&&&&&&& Wscrīpt.Sleep 100&&&&&&&& WshShell.AppActivate "Calculator"&&&&&&&& Wscrīpt.Sleep 100&&&&&&&& WshShell.SendKeys "1{+}"&&&&&&&& Wscrīpt.Sleep 500&&&&&&&& WshShell.SendKeys "2"&&&&&&&& Wscrīpt.Sleep 500&&&&&&&& WshShell.SendKeys "~"&&&&&&&& Wscrīpt.Sleep 500&&&&&&&& WshShell.SendKeys "*3"&&&&&&&& Wscrīpt.Sleep 500&&&&&&&& WshShell.SendKeys "~"&&&&&&&& Wscrīpt.Sleep 2500''''''''''''''''''''''''''''''''''''''''& /font&好了,看到效果了吗?Windows的计算器被定时启动起来去运行脚本了,对吗?:)那么,如果你想让你的QTP脚本也能定时运行,是不是也有一样呢?呵呵本文出自的51Testing软件测试博客,转载请保留出处及链接:=================================附:At命令详解At计划在指定时间和日期在计算机上运行命令和程序。at命令只能在“计划”服务运行时使用。如果在没有参数的情况下使用,则at命令将列出已计划的命令。语法at[\\ComputerName] [{[ID] [/delete]|/delete[/yes]}]at[[\\ComputerName]Hours:Minutes[/interactive] [{/every:Date[,...]|/next:Date[,...]}]Command]参数\\computername指定远程计算机。如果省略该参数,则at命令将计划本地计算机上的命令和程序。ID指定指派给已计划命令的识别码。/delete取消已计划的命令。如果省略了ID,则计算机中所有已计划的命令将被取消。/yes当删除已计划的事件时,对来自系统的所有询问都进行肯定回答。Hours:Minutes指定命令运行的时间。将时间以24小时制式(即从00:00 [午夜]到23:59)表示为小时:分钟。/interactive对于在运行Command时登录的用户,允许Command与该用户的桌面进行交互。/every:在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行Command命令。Date指定运行命令的日期。可以指定一周的某日或多日(即,键入M、T、W、Th、F、S、Su)或一个月中的某日或多日(即,键入从1到31之间的数字)。用逗号分隔多个日期项。如果省略了Date,则at命令将使用该月的当前日期。/next:在下一个指定日期(例如,下一个星期四)到来时运行Command命令。Command指定要运行的Windows命令、程序(即.exe或.com文件)或批处理程序(即.bat或.cmd文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的通用命名协定(UNC)符号,而不是远程驱动器号。/?在命令提示符下显示帮助。注释Schtasks是另一个命令行计划工具,可以用来创建和管理计划任务。有关schtasks的更多信息,请参阅“相关主题”。使用at使用at命令时,要求您必须是本地Administrators组的成员。加载Cmd.exe在运行命令之前,at不会自动加载Cmd.exe(命令解释程序)。如果没有运行可执行文件(.exe),则在命令开头必须使用如下所示的方法专门加载Cmd.exe:cmd /c dir & c:\test.out查看已计划的命令当使用没有命令行选项的at时,计划任务会出现在类似于以下格式的表中:&状态&&&&&&&&&&&ID&&&&&&&&&&&日期&&&&&&&&&&&&&&&&&&&&&&&时间&&&&&&&&&&&&&&&&&&&&&&&命令行OK&&&&&&&&&&&&&1&&&&&&&&&&&&Each F&&&&&&&&&&&&&&&&&&&4:30 PM&&&&&&&&&&&&&&&net send group leads status due&&&&&&&&&OK&&&&&&&&&&&&&2&&&&&&&&&&&&Each M&&&&&&&&&&&&&&&&&&12:00 AM&&&&&&&&&&&&&&chkstor & check.file&OK&&&&&&&&&&&&&3&&&&&&&&&&&&Each F&&&&&&&&&&&&&&&&&&&11:59 PM&&&&&&&&&&&&&&backup2.bat包含识别码(ID)当在命令提示符下使用带有识别码(ID)的at命令时,单个任务项的信息将以类似于以下格式显示:Task ID:&&&&&1&Status:&&&&&&OK&Schedule:&&&&Each&F&Time of Day:&4:30 PM&Command:&&&&&net send group leads status due当计划带有at的命令(尤其是带有命令行选项的命令)后,要通过键入不带命令行选项的at来检查该命令语法是否输入正确。如果显示在“命令行”列中的信息不正确,请删除该命令,然后重新键入它。如果还不正确,则可以在重新键入该命令时让它少带些命令行选项。查看结果使用at的已经计划的命令作为后台程序运行。运行结果不会显示在计算机上。要将输出重定向到文件,请使用重定向符号(&)。如果将输出重定向到文件,则不论是在命令行还是在批处理文件中使用at,都需要在重定向符号之前使用转义符(^)。例如,要重定向输出到Output.text文件,则要键入:at 14:45 c:\test.bat ^&c:\output.txt执行命令的当前目录为文件夹。更改系统时间在使用at命令计划了要运行的命令之后,如果更改了计算机的系统时间,则通过键入不带命令行选项的at,可使at命令计划程序与修改后的系统时间同步。存储命令已计划的命令存储在注册表中。这样,如果重新启动“计划”服务,则不会丢失计划任务。连接到网络驱动器对于需要访问网络的计划作业,请不要使用已重新定向的驱动器。“计划”服务可能无法访问这些重定向的驱动器,或者在该计划任务运行时如果有用户登录,则这些重定向的驱动器可能不会出现。因此,对于计划作业,请使用UNC路径。例如:at 1:00pm my_backup \\server\share请不要使用下述语法(其中x:表示由用户建立的连接):at 1:00pm my_backup x:如果计划了一个使用驱动器号的at命令来连接共享目录,则应包含一个at命令以使在完成该驱动器的使用时断开与驱动器的连接。如果不能断开与驱动器的连接,则在命令提示符下所指派的驱动器号不可用。任务在72小时之后停止默认情况下,使用at命令计划的任务将在72小时之后停止。可以通过修改注册表来更改此默认值。启动注册表编辑器(regedit.exe)。在注册表中找到下列注册表项并对其进行单击:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule在“编辑”菜单中,单击“添加值”,然后添加下列注册表值:数值名称:AtTaskMaxHours数据类型:REG_DWORD基数:十进制 数值数据:0。若数值数据字段中的值为0,则表示没有限制和不会停止。1到99之间的值表示小时数。&警告编辑注册表不当可能会严重损坏您的系统。在更改注册表之前,应备份计算机上任何有价值的数据。任务计划程序和at命令可以使用“任务计划”文件夹查看或修改使用at命令创建的任务的设置。在使用at命令计划任务时,计划的任务将列在“任务计划”文件夹中,其名称举例如下:At3478。但是,如果通过“任务计划”文件夹修改at任务,则该任务将升级为普通计划任务。该任务在at命令中将不再可见,且at帐户设置也不再适用于该任务。需要明确地为该任务输入用户帐户和密码。&示例要显示Marketing服务器上已计划的命令列表,请键入:at \\marketing要了解Corp服务器上识别码为3的命令的详细信息,请键入:at \\corp 3要计划在上午8:00于Corp服务器上运行net share命令,并将该列表重定向到Maintenance服务器的Corp.txt文件(位于Reports共享目录下)中,请键入:at \\corp 08:00 cmd /c "net share reports=d:\marketing\reports && \\maintenance\reports\corp.txt"要每隔5天在午夜将Marketing服务器的硬盘驱动器备份到磁带驱动器,首先创建名为Archive.cmd的批处理程序(它含有备份命令),然后计划该批处理程序的运行,为此请键入:at \\marketing 00:00 /every:5,10,15,20,25,30 archive要取消当前服务器上已计划的所有命令,请按下述方法清除at计划信息:at /delete如果要运行的命令不是可执行(.exe)文件,请按下述方法在该命令之前使用cmd /c来加载Cmd.exe:cmd /c dir & c:\test.out格式化图例&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&斜体用户必须提供的信息粗体用户必须准确键入的要显示的元素省略号(...)在命令行中可多次重复的参数中括号([])可选项大括号({});选项用竖线(|)分隔。例如:{even|odd}用户必须

我要回帖

更多关于 shell脚本学习指南 的文章

 

随机推荐